UVa 537 人工智能

来源:互联网 发布:linux cut命令详解 编辑:程序博客网 时间:2024/05/29 10:46

/*

*  解题思路:

* 题意比较好理解,就是给出P = U*I 中的两个量求第三个量、 纯靠细心!

*      容易错的点、就每组数据还要再多输出一个空行、最后一组也要!( ps: 如果发现自己WA、多拿几组数据测下看哪里出错、情况就那么几种、试下就行了!)

*/

#include <stdio.h>#include <string.h>int main( ){    int t;    int i,j;    int total,flag,p,q;    int len[ 5 ],r[ 5 ] ,y[ 5 ],vis[ 5 ];    double sum[ 5 ],x[ 5 ];    char c;    char ss[ 10 ] = { 'P' , 'U' , 'I' , 'M' , 'm','k','A','V','W'};    char sss[ 5 ][ 100 ];    total = 1;    scanf("%d",&t);    getchar( );    while( t-- )    {       flag = vis[ 0 ] = vis[ 1 ] = 1;        p = q = r[ 0 ] = r[ 1 ] = 0;        memset( sss , '\0' , sizeof( sss ) );        while( ( c = getchar( ) ) !='\n' )        {            if( c == '=' )                flag = 0;            else if( !flag && (c == 'W' || c == 'V' || c =='A' ) )            {                sss[ q ][ p++ ] = c;                flag = 1;                len[ q++ ] = p;                p = 0;            }            else if( !flag )            {                if( c == '.')                {                     vis[  q ] = 0;                     r[ q ] = p;                }                sss[ q ][ p++ ] = c;            }        }        i = 0;        x[ 0 ] = x[ 1 ] = 1;        memset( y,0,sizeof( y ) );        while( i<2 )        {            if( sss[ i ][ len[ i ]-2 ]  == 'm' )                x[ i ] = 0.001;            else if( sss[ i ][ len[ i ] - 2 ] == 'M' )                x[ i ] = 1000000;            else if( sss[ i ][ len[ i ] - 2 ] =='k' )                x[ i ] = 1000;            if( sss[ i ][ len[ i ]-1 ] =='A' )                y[ i ] = 6;            else if( sss[ i ][ len[ i ]-1 ] =='V' )                y[ i ] = 7;            else if( sss[ i ][ len[ i ]-1 ] =='W' )                y[ i ] = 8;            i++;        }         p = 0;         while( p<2 )         {             sum[ p ] = 0;             j=10;            if( vis[ p ] )                for( i=0; ( sss[ p ][ i ]<='9' && sss[ p ][ i ] >='0' ) ;i++ )                    sum[ p ] = sum[ p ]*j + (sss[ p ][ i ]-'0');            else            {                for( i=0,j=10;i < r[ p ] ;i++ )                    sum[ p ] = sum[ p ] * j +( sss[ p ][ i ] - '0' );                for( i=r[p]+1; ( sss[ p ][ i ]<='9' && sss[ p ][ i ] >='0' );i++,j*=10 )                    sum[ p ] = sum[ p ] + (sss[ p ][ i ]-'0')*1.0/j;            }            sum[ p ] = sum[ p ] * x[ p ];            p++;         }        printf("Problem #%d\n",total++ );        if(( y[ 0 ] == 6 && y[ 1 ] == 7 ) ||  (y[ 0 ] == 7 && y[ 1 ] == 6) )            printf("P=%.2lfW\n", sum[ 0 ] *sum[ 1 ] );        else if( y[ 0 ] == 6 && y[ 1 ] == 8 )            printf("U=%.2lfV\n",sum[ 1 ]/sum[ 0 ] );        else if( y[ 0 ] == 7 && y[ 1 ] == 8)            printf("I=%.2lfA\n",sum[ 1 ]/sum[ 0 ] );        else if( y[ 0 ] == 8 && y[ 1 ] ==6 )            printf("U=%.2lfV\n",sum[ 0 ]/sum[ 1 ] );        else if( y[ 0 ] == 8 && y[ 1 ] == 7 )            printf("I=%.2lfA\n",sum[ 0 ]/sum[ 1 ] );        puts("");    }    return 0;}


0 0
原创粉丝点击