В настоящее время работает над простой программой классификатора треугольников на C++ и работает хорошо, за исключением одной или двух вещей.Остановить программу полностью, если условие выполнено в функции C++
Итак, у меня есть четыре функции, одна из которых предназначена для обработки ошибок, таких как введенные значения менее нуля, или введенные длины, которые не позволяют физически возможному треугольнику; один для классификатора, который определяет, какой тип треугольника он зависит от предоставленных значений; один, чтобы вычислить область, которая использует стороны как двойные значения, чтобы вычислить область с помощью формулы Херона, и, наконец, главную функцию, которая вызывает все эти функции в этом порядке, когда стороны передаются им в качестве своих аргументов, так что оператор if может следовать за ними.
Моя проблема заключается в том, что, когда пользователь вводит длины сторон 0, он печатает сообщение об ошибке, что пользователь ввел значения, равные нулю, но затем он печатает его равносторонний треугольник. Что мне нужно изменить, чтобы программа полностью остановилась, когда условие выполнено в инструкции if? Я думаю, проблема в том, что условие работает правильно, но поскольку я вызываю функцию Classifier сразу после ExceptionHandling, он печатает ее равносторонний треугольник.
Я также хочу настроить цикл, который позволит пользователю попробовать снова ввести значение, если они ввели значение, которое вызвало условие, которое должно выполняться в функции ExceptionHandling, однако я попытался настроить цикл while, который просто вызывает бесконечный цикл.
Ниже приведены некоторые фрагменты кода, однако я не могу опубликовать полный код, потому что его назначение и я не хочу, чтобы кто-либо еще его нашел. : Р
...
void ExceptionHandling(double side1, double side2, double side3)
{
if (side1 < 1 || side2 < 1 || side3 < 1)
{
cout << "Error: All values must be greater than zero." << endl;
}
}
double Classifier(double side1, double side2, double side3)
{
if (side1 == side2 && side2 == side3)
{
cout << "This would be classified as an equilateral triangle." << endl;
}
...
int main()
{
double side1;
cout << "Enter the longest side: ";
cin >> side1;
...
ExceptionHandling(side1, side2, side3);
Classifier(side1, side2, side3);
Area(side1, side2, side3);
}
бы оценить упрощенное вниз объяснение, так как я очень заинтересован знать .. Спасибо заранее.
Сделайте процедуру 'exceptionHandling' возвращением значения. 'if (exceptionHandling (side1, side2, side3) == -1) return -1;' будет одним способом. Выясните подробности здесь, не так ли? – Floris
Вызовите ['_exit()'] (http://man7.org/linux/man-pages/man2/exit.2.html) –
@Floris Простите мое невежество, но я не совсем понял, что вы имели в виду, поскольку процедура обработки исключений возвращает значение ... вы имеете в виду изменение фактической функции ExceptionHandling или вызов функции? – user2942863