白書トレーニング-Artficial Intelligence?
3168 ワード
テーマリンク:http://uva.onlinejudge.org/index.php?option=com_オンラインjudge&Itemid=8&page=show_problem&problem=478
本当にくじけました.このテーマは長い間やりました.TATは、題意が簡単で、電圧U電流IパワーPのいずれかの二つを言語で説明し、もう一つを求めます.
文字列の転化と単位の判断ですか?難しくないです.ずっとWAにいます.頭のファイルはcstdioを使っていますので、stdio.hを使ったら正常に戻ります.本当です.
コード:
本当にくじけました.このテーマは長い間やりました.TATは、題意が簡単で、電圧U電流IパワーPのいずれかの二つを言語で説明し、もう一つを求めます.
文字列の転化と単位の判断ですか?難しくないです.ずっとWAにいます.頭のファイルはcstdioを使っていますので、stdio.hを使ったら正常に戻ります.本当です.
コード:
#include
#include
using namespace std;
char s[1000];
char *getnum(char *p,double &ans)
{
ans = 0;
while(*p >= '0' && *p <= '9')
{
ans = *p - '0' + ans * 10;
p++;
}
if(*p == '.')
{
p++;
double quan = 0.1;
while(*p >= '0' && *p <= '9')
{
ans = ans + quan * (*p - '0');
quan *= 0.1;
p++;
}
}
return p;
}
int main()
{
int N;
cin >> N;
cin.get();
double u,i,ap;
bool bu,bi,bp;
int no = 1;
while(N--)
{
cin.getline(s,1000);
char *p = s;
bu = 0;
bi = 0;
bp = 0;
while(*p != '\0')
{
if(*p == '=')
{
if(*(p - 1) == 'u' || *(p - 1) == 'U')
{
bu = 1;
p++;
if(*p >= '0' && *p <= '9')
p = getnum(p,u);
if(*p == 'm')
u *= 0.001;
if(*p == 'k')
u *= 1000;
if(*p == 'M')
u *= 1000000;
}else if(*(p - 1) == 'i' || *(p - 1) == 'I')
{
bi = 1;
p++;
if(*p >= '0' && *p <= '9')
p = getnum(p,i);
if(*p == 'm')
i *= 0.001;
if(*p == 'k')
i *= 1000;
if(*p == 'M')
i *= 1000000;
}else if(*(p - 1) == 'p' || *(p - 1) == 'P')
{
bp = 1;
p++;
if(*p >= '0' && *p <= '9')
p = getnum(p,ap);
if(*p == 'm')
ap *= 0.001;
if(*p == 'k')
ap *= 1000;
if(*p == 'M')
ap *= 1000000;
}
}
p++;
}
cout << "Problem #" << no++ << endl;
if(bu && bi)
printf("P=%.2lfW
",u * i);
else if(bp && bi)
printf("U=%.2lfV
",ap / i);
else if(bu && bp)
printf("I=%.2lfA
",ap / u);
cout << endl;
}
return 0;
}
ドリームコード:http://www.hypo.xyz