几何计算器V1s

lixinyan 爱因斯坦 2024-05-05 14:45:21 2024-05-05 14:46:07 15

#include<bits/stdc++.h>

using namespace std;

int main(){

int o;

cout<<"请问你要计算以下那种计算:\n  1.周长 2.面积 3.表面积 4体积。\n";

cin>>o;

if(o==1){
	cout<<"请选择:1.长方形 2.正方形 3.三角形 4.平行四边形 5.梯形 6.n边形\n";

	int n;

	cin>>n;

	if(n==1){
		cout<<"请输入长方形的长and宽。\n";

		double c,k;

		cout<<"长:";


		cin>>c;

		cout<<"\n宽:";

		cin>>k;

		cout<<"\n长方形的周长为"<<(c+k)*2<<"。\n";

	}
	else if(n==2){

		cout<<"请输入正方形的边长。\n";

		double x;

		cout<<"边长:" ;

		cin>>x;

		cout<<"正方形的周长为"<<4*x<<"。\n";
	}
	else if(n==3){
		cout<<"请输入三角形的三条边长。\n";

		double k,l,j;

		cout<<"边长:";

		cin>>k>>l>>j;

		cout<<"三角形的周长为" <<k+j+l<<"。\n";
	}
	else if(n==4){
		cout<<"请输入平行四边形的底and腰。\n";

		double d,y;

		cout<<"底:";

		cin>>d;

		cout<<"腰:";

		cin>>y;

		cout<<"平行四边形的周长为"<<2*(d+y)<<"。\n";
	}
	else if(n==5){

	cout<<"请输入梯形的上,下底and2条腰。\n";

	int y1,y2,d1,d2;

	cout<<"上底:";

	cin>>d1;

	cout<<"下底:";

	cin>> d2;

	cout<<"腰:";

	cin>>y1>>y2;

	cout<<"梯形的周长为"<<d1+d2+y1+y2<<"。\n";

	}else if(n==6){

		int m,k=0,a[20000];

		cout<<"这个n边形有几条边?";

		cin>>m;

		for(int i=3;i<=n;i++){

			cout<<"第"<<i-2<<"边长";

			cin>>a[i];

			cout<<"。";

			k+=a[i];
		}
		cout<<"这个n边形的周长为"<<k<<"。\n";
	}
	else {
		cout<<"无";

	}
	cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; 
}

return 0;

}

{{ vote && vote.total.up }}

共 7 条回复

lyhldy CSP-J2二等

类似程序首发作者表示高级

lixinyan 爱因斯坦

Ok

Joshua Microsoft

你的代码看起来基本上是一个简单的周长计算器,根据用户的选择计算不同形状的周长。代码中的嵌套 if-else 结构有效地处理了不同形状的输入。不过有几点可以改进的地方:

错误处理:在用户输入错误的情况下,代码只输出了 "无",这可能会使用户感到困惑。可以考虑输出一个提示,让用户知道他们的输入是无效的,并重新提示用户输入正确的选项。

代码结构:目前代码结构相对平坦,导致代码可读性较差。可以考虑将不同形状的周长计算逻辑封装成单独的函数,以提高代码的可维护性和可扩展性。

变量命名:尽量使用描述性的变量名,以提高代码的可读性。例如,用更有意义的名称替换 o、n、m、k 等。

用户界面:用户界面可以更友好一些,例如在提示用户输入时提供更清晰的说明,或者使用循环让用户反复输入直到输入有效为止。

数值输入:考虑在输入数字时进行类型检查,以确保输入的是数字而不是其他类型的数据,避免输入非数字数据导致的错误。 让我帮你做一些改进。首先,我们来修改错误处理部分,让程序在用户输入无效选项时能够给出友好的提示,并要求用户重新输入。我们将使用循环来实现这一功能。让我们开始吧:

#include <iostream>
#include <limits>

using namespace std;

// 函数原型声明
void calculatePerimeter(int choice);

int main() {
    int option;

    // 显示选项菜单
    cout << "请选择要计算的内容:" << endl;
    cout << "1. 周长" << endl;
    cout << "2. 面积" << endl;
    cout << "3. 表面积" << endl;
    cout << "4. 体积" << endl;

    // 循环直到用户输入有效选项
    while (!(cin >> option) || (option < 1 || option > 4)) {
        cout << "无效选项,请重新输入:" << endl;
        cin.clear();  // 清除错误标志
        cin.ignore(numeric_limits<streamsize>::max(), '\n');  // 忽略缓冲区中的无效字符
    }

    // 根据用户选择调用计算周长函数
    calculatePerimeter(option);

    return 0;
}

// 计算周长的函数
void calculatePerimeter(int choice) {
    switch (choice) {
        case 1:
            cout << "请选择形状:" << endl;
            cout << "1. 长方形" << endl;
            cout << "2. 正方形" << endl;
            cout << "3. 三角形" << endl;
            cout << "4. 平行四边形" << endl;
            cout << "5. 梯形" << endl;
            cout << "6. n边形" << endl;

            int shapeOption;
            cin >> shapeOption;

            switch (shapeOption) {
                // 添加各种形状的周长计算
            }

            break;
        // 添加其他选项的计算
    }
}

在这段代码中,我添加了一个循环来验证用户的输入是否有效,如果用户输入了无效选项,程序会提示用户重新输入。接下来,我们可以在 calculatePerimeter 函数中继续添加各种形状的周长计算。让我知道如果你需要帮助继续完善代码。

lixinyan 爱因斯坦

注:V1有但不发

lixinyan 爱因斯坦

欢迎大家来找程序的缺点!

lixinyan 爱因斯坦

只更完了周长部分

lixinyan 爱因斯坦

目前没更完