Реализация ожидания ввода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

#include<stdio.h>
int main (void)
{
    float kat_1 = 17850;
    float kat_2 = 23900;
    float kat_3 = 29750;
    float kat_4 = 14875;
 
    float nalog;
    float dohod;
    char var;
    float kat;
    float musor;
 
s13:  printf("выберете свою категорию:\n a)одинокий\n b)глава семейства"
         "\n c)состоите в браке, совместное ведение хозяйства"
         "\n d)состоите в браке раздельное ведение хозяйства\n"
         " q)выход\n");
      var = musor;
      kat = 0;
      nalog =  0;
      dohod = 0;
s16:  scanf ("%c", &var);
      printf ("\t\t\t%c\n", var);
      if (var < 'a' && var > 'd' && var != 'q')
        {
        printf ("повторите ввод\n");
        goto s16;
        }
      else if (var == 'q')
          return;
s22:  printf ("введите сумму дохода\n");
      scanf ("%f", &dohod);
      if ( dohod < 0)
      {
          printf ("возможно вы ошиблись, ");
          goto s22;
      }
      if (var == 'a')
      {
          if ( dohod <= kat_1)
              nalog = 0.15 * dohod;
          else
              kat = kat_1;
      }
      else if (var == 'b')
      {
          if (dohod <= kat_2)
              nalog = 0.15 * dohod;
          else
              kat = kat_2;
      }
      else if (var == 'c')
      {
          if (dohod <= kat_3)
              nalog = 0.15 * dohod;
          else
              kat = kat_3;
      }
      else if (var == 'd')
      {
          if(dohod <= kat_4)
             nalog = 0.15 * dohod;
          else
              kat = kat_4;
       }
      if (kat != 0);
       nalog = 0.15 * kat + 0.28 * (dohod - kat);
       printf (" ваш налог составит %.2f\n", nalog);
       goto s13;
}
код упражнение и выход bash. проблема в том что после вывода приглашения програма не ждет когда введут вариант, а сразу печатает следующее приглашение ввести доход. если ввести снова букву и цифры то все перещитывает. но вывод приглашения не как в первой итерации. как сделать правильно, пзапись мусора в вариант или 0 не помогает. заранее спасибо выберете свою категорию: a)одинокий b)глава семейства c)состоите в браке, совместное ведение хозяйства d)состоите в браке раздельное ведение хозяйства q)выход a a введите сумму дохода 40000 ваш налог составит 8879.50 выберете свою категорию: a)одинокий b)глава семейства c)состоите в браке, совместное ведение хозяйства d)состоите в браке раздельное ведение хозяйства q)выход введите сумму дохода

Решение задачи: «Реализация ожидания ввода»

textual
Листинг программы
scanf (" %c", &var);

Объяснение кода листинга программы

  1. Вводится значение переменной var с помощью функции scanf.
  2. Тип данных переменной var - символ (char).
  3. Функция scanf считывает символ из стандартного ввода (обычно это клавиатура).
  4. Символ сохраняется в переменной var.
  5. Значение переменной var можно использовать в дальнейшем коде для выполнения различных операций.

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы