问题标题: 酷町堂:图形计算(求思路)

0
0
已解决
张舒斌
张舒斌
中级光能
中级光能

小C在做一道数学的图形计算题,已知有n个图形,每个图形要么是圆要么是正方形,每种图形给定一个参数,如果是该图形是圆,则这个参数就为圆的半径,如果该图形是正方形,则这个参数就是正方形的边长。现有2种计算模式,当模式为0时计算该图形的周长,当模式为1时计算该图形的面积,并将计算的结果四舍五入保留2位小数。圆周率取3.14

输入描述 Input Description

输入为n+1行:
第一行为图形的个数n(n≤100);
之后的n行,每行分别为输入的图形形状("round"表示圆,"square"表示正方形)、图形的对应参数a,以及计算的模式(0:周长,1:面积),之间用单个空格隔开。

输出描述 Output Description

输出为n行,
每一行为对应图像所要求的计算结果,四舍五入并保留2位小数。

样例输入 Sample Input

 

2
round 2.4 0
square 2.4 1

样例输出 Sample Output

 

15.07
5.76

···································

#include<bits/stdc++.h>
using namespace std;
struct txjs
{
    string tx;
    double cs,temp,sum;
    bool ms;
}a[101];
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].tx>>a[i].cs>>a[i].ms;
    }
    for(int i=1;i<=n;i++)
    {
        if(a[i].tx=="round")
        {
            if(a[i].ms==0)
            {
                a[i].temp=3.14*a[i].cs*2;
            }
            else if(a[i].ms==1)
            {
                a[i].temp=3.14*a[i].cs*a[i].cs;
            }
        }
        else if(a[i].tx=="square")
        {
            if(a[i].ms==0)
            {
                a[i].sum=a[i].cs*4;
            }
            else if(a[i].ms==1)
            {
                a[i].sum=a[i].cs*a[i].cs;
            }
        }

    }
    for(int i=1;i<=n;i++)
    {
        printf("%.2f\n",a[i].temp);
        printf("%.2f\n",a[i].sum);
    }
    return 0;
}

要么改程序(并且还得说为什么这样改),要么说思路,谢谢


0
已采纳
李祈乐
李祈乐
新手光能
新手光能
for(int i=1;i<=n;i++)
    {
        printf("%.2f\n",a[i].temp);
        printf("%.2f\n",a[i].sum);
    }

这样写不就输出2*n次吗,一个表示周长,一个表示面积,用一个double类型就可以储存了,样例是输入一行,输出一行,把sum和temp合并起来,

即:

  for(int i=1;i<=n;i++)
    {
        printf("%.2f\n",a[i].sum);
    }

这样就防止在判断中出现一次sum或temp不赋值的情况,使程序都变成sum或temp类型

 if(a[i].tx=="round")
        {
            if(a[i].ms==0)
            {
                a[i].sum=3.14*a[i].cs*2;
            }
            else if(a[i].ms==1)
            {
                a[i].sum=3.14*a[i].cs*a[i].cs;
            }
        }
        else if(a[i].tx=="square")
        {
            if(a[i].ms==0)
            {
                a[i].sum=a[i].cs*4;
            }
            else if(a[i].ms==1)
            {
                a[i].sum=a[i].cs*a[i].cs;
            }
        }

 

0
我要回答