首页
登录 | 注册

POJ3299

POJ3299题解

POJ3299

解题重点在如下几个地方

第一:正确接收来自输入流的数据
第二:将数学公式正确翻译成C语言公式
第三:题目意思是任给两个变量求第三个,而不是像输入样例那样只给你T、D

SOURCE

代码质量如下:

Problem: 3299       User: 20132430222
Memory: 212K        Time: 0MS
Language: C         Result: Accepted

附源码

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define MAXLEN 100
int main()
{
    char ch;
    float T[MAXLEN],D[MAXLEN],H[MAXLEN];
    int flag[MAXLEN];
    int i=0; 
    //while(4==scanf("%c %f %c %f\n",&ch1,&T[i],&ch2,&D[i])){
    //  //getchar();
    //  i++;
    //}
    int flagT = 0,flagD = 0,flagH = 0;
    while(1){
        scanf("%c",&ch);
        if(ch=='E')
            break;
        switch(ch){
            case 'T':
                scanf("%f ",&T[i]);
                flagT = 1;
                break;
            case 'D':
                scanf("%f ",&D[i]);
                flagD = 1;
                break;
            case 'H':
                scanf("%f ",&H[i]); 
                flagH = 1;
                break;
        }
        scanf("%c",&ch);
        switch(ch){
            case 'T':
                scanf("%f\n",&T[i]);
                flagT = 1;
                break;
            case 'D':
                scanf("%f\n",&D[i]);
                flagD = 1;
                break;
            case 'H':
                scanf("%f\n",&H[i]); 
                flagH = 1;
                break;
        }
        if(flagT==1&&flagD==1)
            flag[i]=1;
        if(flagT==1&&flagH==1)
            flag[i]=2;
        if(flagD==1&&flagH==1)
            flag[i]=3;
        flagT = 0;
        flagD = 0;
        flagH = 0;
        i++;
    }
    int j;
    for(j=0;j<i;j++){
        switch(flag[j]){
            case 1:
                H[j] = T[j] + 0.5555*((6.11*pow(2.718281828,(5417.7530*((1.0/273.16)-(1.0/(D[j]+273.16))))))-10.0);
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
            case 2:
                D[j] = (1.0/((1.0/273.16)-((log((((H[j]-T[j])/0.5555)+10.0)/6.11))/5417.7530)))-273.16;
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
            case 3:
                T[j] = H[j] - 0.5555*((6.11*pow(2.718281828,(5417.7530*((1.0/273.16)-(1.0/(D[j]+273.16))))))-10.0);
                printf("T %.1f D %.1f H %.1f\n",T[j],D[j],H[j]); 
                break;
        }

    }
    //system("pause");
    return 0;
} 


2020 jeepxie.net webmaster#jeepxie.net
10 q. 0.009 s.
京ICP备10005923号