У меня есть назначение, которое связано с созданием программы на C, где пользователь должен вставить 3 целых числа и на основе ввода, он предоставляет пользователю тип треугольника (только если он действителен), который он создавал бы с этими значениями.Где добавить цикл в этот код?
Сам код работает, мне удалось вставить несколько циклов для условий тестирования и сделать его более надежным.
Однако я хочу предоставить пользователю возможность повторить попытку для разных результатов или просто закрыть программу. У меня есть ощущение, что мне придется добавить еще один цикл while
, но я точно не знаю, где и как заставить программу работать именно так.
Петля идеально заменит выход в конце или в случае, когда пользователь либо получает недопустимый треугольник на основе ввода. Когда эти случаи происходят, я хочу это так это дает пользователю возможность попробовать повторить или просто выйти из программы
Смотрите мой код:
#include <stdio.h>
int main()
{
/*** Declaring triangle variable sides ****/
float sideA;
float sideB;
float sideC;
char ch;
printf("Lets explore triangles! Please insert a value for side 'A' of your triangle:");
while(scanf("%f", &sideA) != 1)
{
printf("You inserted an incorrect value. Please insert a number for side 'A' of your triangle:");
while ((ch=getchar()) != '\n');
}
printf(" Now insert a value for side 'B' of your triangle:");
while(scanf("%f", &sideB) != 1)
{
printf("You inserted an incorrect value. Please insert a number for side 'B' of your triangle:");
while ((ch=getchar()) != '\n');
}
printf(" And finally, insert a value for side 'C' of your triangle:");
while(scanf("%f", &sideC) != 1)
{
printf("You inserted an incorrect value. Please insert a number for side 'C' of your triangle:");
while ((ch=getchar()) != '\n');
}
/*** List of conditions based on user input to identify if the triangle is valid and if so, what type of triangle they get***/
if(sideA <=0 || sideB<=0 || sideC <=0)
{
printf("YOUR TRIANGLE IS 'INVALID'.\n\n");
printf("REASON: You cannot have a triangle with any side having a value of 0.\n");
printf("Please exit the program and restart it to try again.\n");
}
else
if((sideA+sideB<sideC) || (sideB+sideC<sideA) || (sideC+sideA<sideB))
{
printf("YOUR TRIANGLE IS 'INVALID'.\n\n");
printf("REASON: The sum of every pair of sides must be greater than the third side of a triangle.!\n");
printf("Please exit the program and restart it to try again.\n");
}
else
if((sideA==sideC && sideB==sideC) || (sideB==sideA && sideC==sideA) || (sideC==sideB && sideA==sideB)) /*** Code to determine EQUILATERAL TRIANGLE***/
{
printf("YOUR TRIANGLE IS 'VALID'.\n");
printf(" Your input creates a valid EQUILATERAL triangle.\n");
}
else
if((sideA == sideB) || (sideB == sideC) || (sideC == sideA))/*** Code to determine ISOSCELES TRIANGLE***/
{
printf("YOUR TRIANGLE IS 'VALID'.\n");
printf("Your input creates a valid ISOSCELES triangle.\n");
}
else
if((sideA!= sideB) && (sideB != sideC))/*** Code to determine SCALENE triangle ***/
{
printf("YOUR TRIANGLE IS 'VALID'.\n");
printf("Your input creates a valid SCALENE triangle.\n");
}
else
{
printf("You have inserted invalid range of values, as a result your triangle is invalid.\n");
printf("Please exit the program and restart it to try again.\n");
printf("Goodbye.\n");
}
return(0);
}
Вы бы добавить петлю вокруг частей, которые вы хотите повторить. – immibis
В идеале это были случаи, когда пользователь вставляет недопустимый набор значений, заставляя программу выводить сообщение пользователю. Это будет сразу после этого сообщения. Что бы мне пришлось набирать, чтобы сделать это. Будет ли это похоже на те, которые я уже сделал? – Shivarn
Некоторые общие замечания: (1) Уступка просит вас принять три целых числа. Почему ваша программа использует значения 'float'? (2) Всегда старайтесь избегать повторения кода. Напишите функцию, которая вводит боковую длину от пользователя и возвращает это значение, затем вызывайте ее 3 раза. (например, 'sideA = get_side ('A'); sideB = get_side ('B'); sideC = get_side ('C');' (3) Ваш код будет более читабельным, если вы сохраните свои '' '' ' выровнены с инструкциями 'if', которые предшествуют им. (4) Логика, которую вы используете для проверки равностороннего треугольника, может быть упрощена. Я дам вам понять это самостоятельно. –