这个若不行则重新输入应该咋搞

输出三个数 如果这三个数能组成三角形则判断这是什么类型的三角形 若不行则重新输入

img


#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int a, b, c;
    while (true) {
        cout << "输入三个整数:" << endl;
        cin >> a >> b >> c;
        int arr[3] = {a, b, c};
        sort(arr, arr+3); 
        a = arr[0];
        b = arr[1];
        c = arr[2];
        if (a + b <= c) {
            cout << "无法组成三角形,重新输入" << endl;
        } else {
            cout << "可以组成三角形,";
            if (a == b && b == c) {
                cout << "是等边三角形" << endl;
            } else if (a == b || a == c || b == c) {
                cout << "是等腰三角形" << endl;
            } else if (a*a + b*b == c*c) {
                cout << "是直角三角形" << endl;
            } else {
                cout << "是普通三角形" << endl;
            }
            break;
        }
    }
    return 0;
}

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7801532
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:输入三个整型数据,判断能否构成三角形以及能否构成直角三角形
  • 除此之外, 这篇博客: 自动调用拷贝构造函数的三种情况中的 自动调用拷贝构造函数的三种情况 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先介绍拷贝构造函数的定义形式:

    class 类名
    {
    public:
    构造函数名称 (类名 &变量名)
    {
    函数体
    }
    ……
    };

    拷贝构造函数是使用类对象的引用作为参数的构造函数,它能够将参数的属性值拷贝给新的对象,完成对新对象的初始化。

    1,第一种情况:使用一个对象初始化另一个对象

    给出例子:
    在这里插入图片描述

    在第40行中将旧对象mynewcar作为新对象myseccar的参数,通过第23行的拷贝函数定义了新对象,使其初始化;其实还可以写成Car myseccar = mynewcar;这两个表达式虽然不同但是作用是一样的;

    2,第二种情况:对象作为实参传递给函数参数

    给出例子:
    在这里插入图片描述
    在第52行里已经定义了的旧对象mynewcar作为实参传递给了函数print_carinfo(Car carinfo)、在作为实参传给函数时就会自动调用第24行的拷贝函数;

    3,第三种情况:函数返回值为类对象,创建临时对象作为返回值

    给出例子:
    在这里插入图片描述
    在第46行代码里函数get_carinfo()返回了一个对象tmp;当函数返回值为类对象时就会创建临时对象,并会调用拷贝构造函数。

    ///////////////////////////////////////////////////////分割线///////////////////////////////////////完///////////////////////////////////////////////////////////////

  • 您还可以看一下 郑逊敏老师的抖音快手短视频自媒体制作引流运营兼职创业赚钱盈利实战教程课程中的 避免成为炮灰的“三不”原则小节, 巩固相关知识点