#include <stdio.h>
#include <unistd.h>
int main()
{
int chng, valVAT;
double sumInVAT, sumNoVAT, sumVAT;
while(1)
{
printf ("Введите ставку НДС (10, 18 или 20) либо 0 для выхода из программы: ");
scanf ("%d", &valVAT);
if ((valVAT == 10) || (valVAT == 18) || (valVAT == 20))
{
while(1)
{
printf ("Выделить НДС: введите 1\nНачислить НДС: введите 2\n");
printf ("Выход из программы: введите 0\nВведите номер операции: ");
scanf ("%d", &chng);
if(chng == 1)
{
printf ("Введите сумму, из которой необходимо выделить НДС: ");
scanf ("%lf", &sumInVAT);
sumVAT = sumInVAT / (100 + valVAT) * valVAT;
sumNoVAT = sumInVAT-sumVAT;
printf ("НДС в том числе составляет: %.2lf\nСумма без НДС: %.2lf\n", sumVAT, sumNoVAT);
printf ("Всего доброго!\n");
return 0;
}
else if(chng == 2)
{
printf ("Введите сумму, на которую необходимо начислить НДС: ");
scanf ("%lf", &sumNoVAT);
sumVAT = sumNoVAT * valVAT / 100;
sumInVAT = sumNoVAT + sumVAT;
printf ("НДС к начислению составляет: %.2lf\nСумма с НДС: %.2lf\n", sumVAT, sumInVAT);
printf ("Всего доброго!\n");
return 0;
}
else if(chng == 0)
{
printf ("Всего доброго!\n");
return 0;
}
else
{
printf ("\nОШИБКА! Выберите допустимое значение операции.\n\n");
sleep(1);
continue;
}
}
}
if(valVAT == 0)
{
printf ("Всего доброго!\n");
return 0;
}
if ((valVAT != 0) || (valVAT != 10) || (valVAT != 18) || (valVAT != 20))
{
printf("\nОШИБКА! Укажите допустимую ставку налога.\n\n");
sleep(1);
continue;
}
}
return 0;
}
if ((valVAT == 10) || (valVAT == 18) || (valVAT == 20)) {
...
if(a) { много кода }
стоит писать: if (!a) {
continue; // или return; если это в функции.
}
// много кода.
valVAT == 0
и выйти из цикла через break в этом случае. Потом проверить, что valVat != 10 && valVAT != 18 && valVAT != 20
и вывести сообщение об ошибке и сделать continue. Дальше уже идет тело цикла с вычислениями.if(chng == 1) {} else if (chng == 2) {}...
стоит использовать конструкцию switch (chng) {
case 0:
// код
break;
case 1:
// код
break;
case 2:
// код
break;
default:
// сообщение об ошибке
continue;
}
sleep(1)
после вывода сообщения об ошибке, на мой взгляд не нужен. Зачем это? Заставить пользователя прочитать сообщение об ошибке?