当前位置: 首页 > news >正文

C++几何计算器

众所周知,几何是数学中的重头戏,那么我这两天写了一个程序,可以简单的计算出多种图形的各样值,下方会具体介绍。

第一部分:平面图形

1. 长方形
  • 支持功能
    • 计算周长:输入长和宽,计算周长(公式:2×(长+宽))。
    • 计算面积:输入长和宽,计算面积(公式:长×宽)。
    • 计算尺寸
      • 已知面积和长,求宽(公式:面积÷长)。
      • 已知面积和宽,求长(公式:面积÷宽)。
      • 已知周长和长,求宽(公式:周长÷2−长)。
      • 已知周长和宽,求长(公式:周长÷2−宽)。
2. 正方形
  • 支持功能
    • 计算周长:输入边长,计算周长(公式:4×边长)。
    • 计算面积:输入边长,计算面积(公式:边长×边长)。
    • 计算尺寸
      • 已知面积,求边长(公式:√面积)。
      • 已知周长,求边长(公式:周长÷4)。
3. 平行四边形
  • 支持功能
    • 计算周长:输入底边和侧边长度,计算周长(公式:2×(底边+侧边))。
    • 计算面积:输入底边和高,计算面积(公式:底边×高)。
    • 计算尺寸
      • 已知面积和底边,求高(公式:面积÷底边)。
      • 已知面积和高,求底边(公式:面积÷高)。
4. 三角形
  • 支持功能
    • 计算周长:输入三条边,计算周长(公式:边1+边2+边3,自动校验三边有效性)。
    • 计算面积:输入三条边,计算面积(海伦公式:√[s×(s−a)×(s−b)×(s−c)],其中 s=(a+b+c)/2)。
    • 计算尺寸
      • 已知面积和底边,求高(公式:2×面积÷底边)。
      • 已知等边三角形面积,求边长(公式:√(4×面积÷√3))。
5. 梯形
  • 支持功能
    • 计算周长:输入上底、下底和两腰,计算周长(公式:上底+下底+腰1+腰2)。
    • 计算面积:输入上底、下底和高,计算面积(公式:(上底+下底)×高÷2)。
    • 计算尺寸
      • 已知面积、上底和下底,求高(公式:2×面积÷(上底+下底))。
      • 已知面积、上底和高,求下底(公式:2×面积÷高−上底)。
      • 已知面积、下底和高,求上底(公式:2×面积÷高−下底)。
6. 圆形
  • 支持功能
    • 计算周长:输入半径,计算周长(公式:2×π×半径π=3.14)。
    • 计算面积:输入半径,计算面积(公式:π×半径²)。
    • 计算尺寸
      • 已知面积,求半径(公式:√(面积÷π))。
      • 已知周长,求半径(公式:周长÷(2×π))。

第二部分:立体图形

1. 立方体
  • 支持功能
    • 计算表面积:输入边长,计算表面积(公式:6×边长²)。
    • 计算体积:输入边长,计算体积(公式:边长³)。
    • 计算尺寸
      • 已知表面积,求边长(公式:√(表面积÷6))。
      • 已知体积,求边长(公式:³√体积)。
2. 长方体
  • 支持功能
    • 计算表面积:输入长、宽、高,计算表面积(公式:2×(长×宽+长×高+宽×高))。
    • 计算体积:输入长、宽、高,计算体积(公式:长×宽×高)。
    • 计算尺寸
      • 已知体积、长和宽,求高(公式:体积÷(长×宽))。
      • 已知体积、长和高,求宽(公式:体积÷(长×高))。
      • 已知体积、宽和高,求长(公式:体积÷(宽×高))。
3. 圆柱体
  • 支持功能
    • 计算表面积:输入底面半径和高,计算表面积(公式:2×π×半径×(半径+高))。
    • 计算体积:输入底面半径和高,计算体积(公式:π×半径²×高)。
    • 计算尺寸
      • 已知体积和半径,求高(公式:体积÷(π×半径²))。
      • 已知体积和高,求半径(公式:√(体积÷(π×高)))。
4. 圆锥体
  • 支持功能
    • 计算表面积:输入底面半径和高,计算表面积(公式:π×半径×(半径+√(半径²+高²)))。
    • 计算体积:输入底面半径和高,计算体积(公式:(1/3)×π×半径²×高)。
    • 计算尺寸
      • 已知体积和半径,求高(公式:3×体积÷(π×半径²))。
      • 已知体积和高,求半径(公式:√(3×体积÷(π×高)))。
5. 球体
  • 支持功能
    • 计算表面积:输入半径,计算表面积(公式:4×π×半径²)。
    • 计算体积:输入半径,计算体积(公式:(4/3)×π×半径³)。
    • 计算尺寸
      • 已知表面积,求半径(公式:√(表面积÷(4×π)))。
      • 已知体积,求半径(公式:³√(3×体积÷(4×π)))。
         

上代码:
 

#include<iostream>
#include<cmath>
#include<limits>
using namespace std;
int main() {while(true) {system("cls");cout<<"******************\n****几何计算器****\n******************\n\n请选择计算类型:\n1. 平面图形计算\n2. 立体图形计算\n0. 退出程序\n请输入您的选择: ";int choice;while(!(cin>>choice)) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(choice==0)break;if(choice!=1&&choice!=2) {cout<<"无效选择,请按任意键重试...";cin.ignore();cin.get();continue;}if(choice==1) {system("cls");cout<<"平面图形计算\n============\n\n请选择平面图形:\n1. 长方形\n2. 正方形\n3. 平行四边形\n4. 三角形\n5. 梯形\n6. 圆形\n请输入图形编号: ";int figure;while(!(cin>>figure)||figure<1||figure>6) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}cout<<"\n您需要进行什么操作:\n1. 计算周长\n2. 计算面积\n3. 计算尺寸\n请输入操作编号: ";int operation;while(!(cin>>operation)||(operation<1||operation>3)) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}system("cls");cout<<"计算中..."<<endl<<"====================\n";switch(figure) {case 1: {double len,wid,result;if(operation==1) {cout<<"请输入长和宽: ";while(!(cin>>len>>wid)||len<=0||wid<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=2*(len+wid);cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入长和宽: ";while(!(cin>>len>>wid)||len<=0||wid<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=len*wid;cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积和长\n2. 已知面积和宽\n3. 已知周长和长\n4. 已知周长和宽\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>4) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积和长: ";double area,given_len;while(!(cin>>area>>given_len)||area<=0||given_len<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n宽 = "<<area/given_len<<endl;} else if(cond==2) {cout<<"请输入面积和宽: ";double area,given_wid;while(!(cin>>area>>given_wid)||area<=0||given_wid<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n长 = "<<area/given_wid<<endl;} else if(cond==3) {cout<<"请输入周长和长: ";double perimeter,given_len;while(!(cin>>perimeter>>given_len)||perimeter<=0||given_len<=0||perimeter<2*given_len) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n宽 = "<<(perimeter/2-given_len)<<endl;} else {cout<<"请输入周长和宽: ";double perimeter,given_wid;while(!(cin>>perimeter>>given_wid)||perimeter<=0||given_wid<=0||perimeter<2*given_wid) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n长 = "<<(perimeter/2-given_wid)<<endl;}}break;}case 2: {double side,result;if(operation==1) {cout<<"请输入边长: ";while(!(cin>>side)||side<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=4*side;cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入边长: ";while(!(cin>>side)||side<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=side*side;cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积\n2. 已知周长\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积: ";double area;while(!(cin>>area)||area<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n边长 = "<<sqrt(area)<<endl;} else {cout<<"请输入周长: ";double perimeter;while(!(cin>>perimeter)||perimeter<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n边长 = "<<perimeter/4<<endl;}}break;}case 3: {double base,side,height,result;if(operation==1) {cout<<"请输入底边和侧边长度: ";while(!(cin>>base>>side)||base<=0||side<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=2*(base+side);cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入底边长度和高: ";while(!(cin>>base>>height)||base<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=base*height;cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积和底边\n2. 已知面积和高\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积和底边: ";double area,given_base;while(!(cin>>area>>given_base)||area<=0||given_base<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<area/given_base<<endl;} else {cout<<"请输入面积和高: ";double area,given_height;while(!(cin>>area>>given_height)||area<=0||given_height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n底边 = "<<area/given_height<<endl;}}break;}case 4: {double a,b,c,h,s,result;if(operation==1) {cout<<"请输入三条边的长度: ";while(!(cin>>a>>b>>c)||a<=0||b<=0||c<=0||(a+b<=c)||(a+c<=b)||(b+c<=a)) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入有效的三角形边长: ";}result=a+b+c;cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入三条边的长度: ";while(!(cin>>a>>b>>c)||a<=0||b<=0||c<=0||(a+b<=c)||(a+c<=b)||(b+c<=a)) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入有效的三角形边长: ";}s=(a+b+c)/2;result=sqrt(s*(s-a)*(s-b)*(s-c));cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积和底边\n2. 已知为等边三角形,已知面积\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积和底边: ";double area,given_base;while(!(cin>>area>>given_base)||area<=0||given_base<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<(2*area/given_base)<<endl;} else {cout<<"请输入面积: ";double area;while(!(cin>>area)||area<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n边长 = "<<sqrt(4*area/sqrt(3))<<endl;}}break;}case 5: {double a,b,c,d,h,result;if(operation==1) {cout<<"请输入上底、下底和两腰的长度: ";while(!(cin>>a>>b>>c>>d)||a<=0||b<=0||c<=0||d<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=a+b+c+d;cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入上底、下底和高: ";while(!(cin>>a>>b>>h)||a<=0||b<=0||h<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=(a+b)*h/2;cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积、上底和下底\n2. 已知面积、上底和高\n3. 已知面积、下底和高\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>3) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积、上底和下底: ";double area,upper,lower;while(!(cin>>area>>upper>>lower)||area<=0||upper<=0||lower<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<(2*area/(upper+lower))<<endl;} else if(cond==2) {cout<<"请输入面积、上底和高: ";double area,upper,height;while(!(cin>>area>>upper>>height)||area<=0||upper<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n下底 = "<<(2*area/height-upper)<<endl;} else {cout<<"请输入面积、下底和高: ";double area,lower,height;while(!(cin>>area>>lower>>height)||area<=0||lower<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n上底 = "<<(2*area/height-lower)<<endl;}}break;}case 6: {double r,result;const double PI=3.14;if(operation==1) {cout<<"请输入半径: ";while(!(cin>>r)||r<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=2*PI*r;cout<<"\n周长 = "<<result<<endl;} else if(operation==2) {cout<<"请输入半径: ";while(!(cin>>r)||r<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=PI*r*r;cout<<"\n面积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知面积\n2. 已知周长\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入面积: ";double area;while(!(cin>>area)||area<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<sqrt(area/PI)<<endl;} else {cout<<"请输入周长: ";double perimeter;while(!(cin>>perimeter)||perimeter<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<perimeter/(2*PI)<<endl;}}break;}}cout<<"\n按任意键继续...";cin.ignore();cin.get();} else if(choice==2) {system("cls");cout<<"立体图形计算\n============\n\n请选择立体图形:\n1. 立方体\n2. 长方体\n3. 圆柱体\n4. 圆锥体\n5. 球体\n请输入图形编号: ";int solidFigure;while(!(cin>>solidFigure)||solidFigure<1||solidFigure>5) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}cout<<"\n您需要进行什么操作:\n1. 计算表面积\n2. 计算体积\n3. 计算尺寸\n请输入操作编号: ";int op;while(!(cin>>op)||(op<1||op>3)) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}system("cls");cout<<"计算中..."<<endl<<"====================\n";const double PI=3.14;switch(solidFigure) {case 1: {double edge,result;if(op==1) {cout<<"请输入边长: ";while(!(cin>>edge)||edge<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=6*edge*edge;cout<<"\n表面积 = "<<result<<endl;} else if(op==2) {cout<<"请输入边长: ";while(!(cin>>edge)||edge<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=edge*edge*edge;cout<<"\n体积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知表面积\n2. 已知体积\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入表面积: ";double surface_area;while(!(cin>>surface_area)||surface_area<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n边长 = "<<sqrt(surface_area/6)<<endl;} else {cout<<"请输入体积: ";double volume;while(!(cin>>volume)||volume<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n边长 = "<<cbrt(volume)<<endl;}}break;}case 2: {double length,width,height,result;if(op==1) {cout<<"请输入长、宽、高: ";while(!(cin>>length>>width>>height)||length<=0||width<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=2*(length*width+length*height+width*height);cout<<"\n表面积 = "<<result<<endl;} else if(op==2) {cout<<"请输入长、宽、高: ";while(!(cin>>length>>width>>height)||length<=0||width<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=length*width*height;cout<<"\n体积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知体积、长和宽\n2. 已知体积、长和高\n3. 已知体积、宽和高\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>3) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入体积、长和宽: ";double volume,given_length,given_width;while(!(cin>>volume>>given_length>>given_width)||volume<=0||given_length<=0||given_width<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<volume/(given_length*given_width)<<endl;} else if(cond==2) {cout<<"请输入体积、长和高: ";double volume,given_length,given_height;while(!(cin>>volume>>given_length>>given_height)||volume<=0||given_length<=0||given_height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n宽 = "<<volume/(given_length*given_height)<<endl;} else {cout<<"请输入体积、宽和高: ";double volume,given_width,given_height;while(!(cin>>volume>>given_width>>given_height)||volume<=0||given_width<=0||given_height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n长 = "<<volume/(given_width*given_height)<<endl;}}break;}case 3: {double radius,height,result;if(op==1) {cout<<"请输入底面半径和高: ";while(!(cin>>radius>>height)||radius<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=2*PI*radius*(radius+height);cout<<"\n表面积 = "<<result<<endl;} else if(op==2) {cout<<"请输入底面半径和高: ";while(!(cin>>radius>>height)||radius<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=PI*radius*radius*height;cout<<"\n体积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知体积和半径\n2. 已知体积和高\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入体积和半径: ";double volume,given_radius;while(!(cin>>volume>>given_radius)||volume<=0||given_radius<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<volume/(PI*given_radius*given_radius)<<endl;} else {cout<<"请输入体积和高: ";double volume,given_height;while(!(cin>>volume>>given_height)||volume<=0||given_height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<sqrt(volume/(PI*given_height))<<endl;}}break;}case 4: {double radius,height,result;if(op==1) {cout<<"请输入底面半径和高: ";while(!(cin>>radius>>height)||radius<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}double slant_height=sqrt(radius*radius+height*height);result=PI*radius*(radius+slant_height);cout<<"\n表面积 = "<<result<<endl;} else if(op==2) {cout<<"请输入底面半径和高: ";while(!(cin>>radius>>height)||radius<=0||height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=(1.0/3.0)*PI*radius*radius*height;cout<<"\n体积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知体积和半径\n2. 已知体积和高\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入体积和半径: ";double volume,given_radius;while(!(cin>>volume>>given_radius)||volume<=0||given_radius<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n高 = "<<(3*volume)/(PI*given_radius*given_radius)<<endl;} else {cout<<"请输入体积和高: ";double volume,given_height;while(!(cin>>volume>>given_height)||volume<=0||given_height<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<sqrt((3*volume)/(PI*given_height))<<endl;}}break;}case 5: {double radius,result;if(op==1) {cout<<"请输入半径: ";while(!(cin>>radius)||radius<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=4*PI*radius*radius;cout<<"\n表面积 = "<<result<<endl;} else if(op==2) {cout<<"请输入半径: ";while(!(cin>>radius)||radius<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}result=(4.0/3.0)*PI*radius*radius*radius;cout<<"\n体积 = "<<result<<endl;} else {cout<<"已知条件:\n1. 已知表面积\n2. 已知体积\n请选择: ";int cond;while(!(cin>>cond)||cond<1||cond>2) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请重新输入: ";}if(cond==1) {cout<<"请输入表面积: ";double surface_area;while(!(cin>>surface_area)||surface_area<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<sqrt(surface_area/(4*PI))<<endl;} else {cout<<"请输入体积: ";double volume;while(!(cin>>volume)||volume<=0) {cin.clear();cin.ignore(numeric_limits<streamsize>::max(),'\n');cout<<"输入无效,请输入正数: ";}cout<<"\n半径 = "<<cbrt((3*volume)/(4*PI))<<endl;}}break;}}cout<<"\n按任意键继续...";cin.ignore();cin.get();}}system("cls");cout<<"\n欢迎下次光临\n\n";return 0;
}

http://www.xdnf.cn/news/514819.html

相关文章:

  • 【IP101】图像多尺度分析:金字塔结构的原理、构建与高级应用
  • 【SpringBoot】✈️整合飞书群机器人发送消息
  • JavaScript基础-获取元素
  • 【QGIS二次开发】地图编辑-09
  • python + pip 独家秘籍
  • printf函数参数与入栈顺序
  • 翻到了一段2005年写的关于需求的文字
  • java每日精进 5.18【文件存储】
  • Ubuntu 18.04设置静态IP的方法(图形化操作)
  • 美丽的独处时光
  • 菱形继承原理
  • java集合相关的api-总结
  • 2025年- H27-Lc135- 239.滑动窗口最大值(自定义双端队列)---java版
  • 量子计算在金融科技中的应用前景
  • [Codeforce刷题8]
  • 无废话离线大模型安装
  • 【随机过程】贝叶斯估计
  • 游戏引擎学习第292天:实现蛇
  • es聚合-词条统计
  • 量子计算 | 量子密码学的挑战和机遇
  • LWIP的NETCONN接口
  • APP手机端测试覆盖点
  • 专业漏洞扫描机构如何助力企业保障安全并提升竞争力?
  • 【MySQL】库与表的操作
  • 力扣热题——数组的最小相等和
  • 关于 Web 漏洞原理与利用:1. SQL 注入(SQLi)
  • 基于FPGA的电子万年历系统开发,包含各模块testbench
  • ​Docker 网络
  • 前端三剑客之HTML
  • 深入解析Python中的Vector2d类:从基础实现到特殊方法的应用