You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让C++程序通过输入的多边形名称自动获取对应边数计算周长

正多边形周长计算优化实现

你需要的自动匹配边数功能用if-else条件判断完全可以实现,核心逻辑是拿到用户输入的多边形名称后,和预设的常见多边形名称做匹配,匹配成功就直接给边数变量赋值,不需要用户手动输入边数。

优化后完整代码

#include<iostream>
#include<string>
// 注意加<string>头文件,部分编译器string操作需要显式引入
using namespace std;

int main(){
    string polygon;
    int ns; //ns是多边形边数
    float ls,perimeter; //ls是单边长,单位毫米
    cout<<"Program to calculate the perimeter of a regular polygon.";
    cout<<"\n********************************************************";
    cout<<"\n\nEnter the name of the polygon: ";
    cin>>polygon;

    // 新增:根据多边形名称自动匹配边数
    if (polygon == "triangle" || polygon == "Triangle") {
        ns = 3;
    } else if (polygon == "quadrilateral" || polygon == "Quadrilateral" || polygon == "square" || polygon == "Square") {
        ns = 4;
    } else if (polygon == "pentagon" || polygon == "Pentagon") {
        ns = 5;
    } else if (polygon == "hexagon" || polygon == "Hexagon") {
        ns = 6;
    } else if (polygon == "heptagon" || polygon == "Heptagon") {
        ns = 7;
    } else if (polygon == "octagon" || polygon == "Octagon") {
        ns = 8;
    } else {
        cout << "\n错误:未识别的多边形名称,请检查拼写后重试";
        return 1; // 匹配失败直接退出程序
    }

    cout<<"\nEnter the length of the side in millimeters: ";
    cin>>ls;    
    //周长计算逻辑不变
    perimeter=ns*ls;
    cout<<"\nThe perimeter of a " <<polygon<< " with length " <<ls<< " millimeters is "<<perimeter;

    return 0;
}

核心改动说明

  • 删掉了原来要求用户手动输入边数ns的代码行,改为通过条件判断自动赋值
  • 加入了大小写兼容逻辑,用户输入全小写或者首字母大写的多边形名称都可以正常匹配
  • 新增了未知名称的错误提示,避免程序拿到无效的边数后计算出错误结果
  • 如果需要支持更多多边形,只要按照现有格式新增else if分支即可,不需要修改其他逻辑

如果你不想写太多if分支,后续熟悉C++语法后也可以用std::map<std::string, int>来存储名称和边数的映射关系,匹配时代码会更简洁。

内容的提问来源于stack exchange,提问作者krankenhaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:57:02