#include <stdio.h>
int main()
{
float num_1 = 0;
float num_2 = 0;
float result = 0;
char wait[2] = {0};
char vopros[2] = {0};
char vopros_2[2] = {0};
do {
printf("\n\t\t\t\t\tКАЛЬКУЛЯТОР 3.0");
printf("\nВведите первое число: ");
scanf("%f", &num_1);
printf("\nВведите второе число: ");
scanf("%f", &num_2);
printf("\nВыберите действие - +, -, *, /: ");
scanf("%s", wait);
if (wait[0] == '+') {
result = num_1 + num_2;
}
else if (wait[0] == '-') {
result = num_1 - num_2;
}
else if (wait[0] == '*') {
result = num_1 * num_2;
}
else if (wait[0] == '/') {
result = num_1 / num_2;
}
else {
printf("Ошибка синтаксиса\n");
}
if ( ( wait[0] == '/' && (num_1 == 0 && num_2 == 0) ) || ( wait[0] == '/' && (num_1 == 0 || num_2 == 0) ) ) {
printf("\n\nТЫ ЧТО-ТО ДЕЛАЕШЬ НЕ ТАК!!!\n\n");
}
goto metka;
printf("%f %s %f = %f\n", num_1, wait, num_2, result);
do {
printf("Хотите воспроизвести действие еще с одним числом?(Y/n)");
scanf("%s", vopros_2);
if (vopros_2[0] == 'n') {
vopros_2[0] = 'N';
}
else if (vopros_2[0] != 'n' || vopros_2[0] != 'N') {
num_1 = 0;
num_2 = 0;
char wait[2] = {0};
printf("Введите число\n");
scanf("%f", &num_1);
printf("\nВыберите действие - +, -, *, /: ");
scanf("%s", wait);
if (wait[0] == '+') {
result = result + num_1;
}
else if (wait[0] == '-') {
result = result - num_1;
}
else if (wait[0] == '*') {
result = result * num_1;
}
else if (wait[0] == '/') {
result = result / num_1;
}
else {
printf("Ошибка синтаксиса\n");
}
printf("Result - %.6f\n", result);
}
}
while (vopros_2[0] != 'N');
metka:
printf("Хотите попробывать еше раз? (Y/n): ");
scanf("%s", vopros);
if (vopros[0] == 'n') {
vopros[0] = 'N';
}
}
while (vopros[0] != 'N');
return 0;
}
int main(void)
вместо int main()
float
вместо типа double
.wait
scanf("%s", wait);
никак не защищен от переполнения. И это при том, что буфер wait
имеет минимальный размер. Лучше scanf("%1s", wait);
. Разумеется, это не решит всех потенциальных проблем с некорректным вводом...if ( ( wait[0] == '/' && (num_1 == 0 && num_2 == 0) ) || ( wait[0] == '/' && (num_1 == 0 || num_2 == 0) ) )
- что это за странная двойная проверка одного и того же?goto
здесь совсем не уместно.