当前位置: 代码迷 >> 综合 >> UVA-537 - Artificial Intelligence?
  详细解决方案

UVA-537 - Artificial Intelligence?

热度:27   发布时间:2023-12-19 11:46:46.0

这道题目做了至少有两个小时,郁闷~

 

寻找题目中的两个“=”,记录每一个“=”前面的标志(P,I,U),后面的数字。

 

运用数组存P,U,I的值,shu['P']存P的值,shu['I']存I的值,shu['U']存U的值,一开始全部变为0,一条字符串判断完成后,哪个为0,哪个就输出。

 

可惜一开始以为'k'是小写的,我一开始以为是大写的,WA了一次。

 

#include<stdio.h>
#include<string.h>
double sum(char *str)
{
double s=0;
int leap,i,n;
n=strlen(str);
leap=1;
for(i=0;i<n;i++)
{
if(str[i]>='0'&&str[i]<='9')
{
s=s*10+str[i]-'0';
}
else
{
for(i=i+1;i<n;i++)
{
s=s*10+str[i]-'0';
leap=leap*10;
}
}
}
return s/leap;
}
void pan(char *str)
{
double shu[100];
char s[100];
int i,n,leap,j;
int con;
n=strlen(str);
memset(shu,0,sizeof(shu));
for(i=0;i<n;i++)
{
if(str[i]=='=')
{
con=str[i-1];
for(j=i+1;j<n;j++)
{
if(str[j]!='.'&&(str[j]<'0'||str[j]>'9'))
{
s[j-i-1]='\0';
break;
}
s[j-i-1]=str[j];
}
i=j;
shu[con]=1.0*sum(s);
if(str[i]=='m')
shu[con]*=0.001;
if(str[i]=='k')
shu[con]*=1000;
if(str[i]=='M')
shu[con]*=1000000;
}
}
if(shu['P']==0)
printf("P=%.2lfW\n",1.0*shu['U']*shu['I']);
if(shu['U']==0)
printf("U=%.2lfV\n",1.0*shu['P']/shu['I']);
if(shu['I']==0)
printf("I=%.2lfA\n",1.0*shu['P']/shu['U']);
}
int main()
{
int n,i;
char str[1000];
scanf("%d%*c",&n);
for(i=0;i<n;i++)
{
gets(str);
printf("Problem #%d\n",i+1);
pan(str);
printf("\n");
}
return 0;
}


 

 

  相关解决方案