Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 28
1

Реализация ожидания ввода

29.02.2016, 23:37. Показов 1219. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#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)выход


введите сумму дохода
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.02.2016, 23:37
Ответы с готовыми решениями:

Реализация ожидания работы с файлом
Добрый вечер! Имеется следующий скрипт (блестяще создан на этом форуме alpap): @echo off set...

Реализация ожидания нажатия клавиши в asm
Возможно кто-то сталкивался с данным вопросом ранее, Как реализовать проверку нажатия клавиши к...

Осуществить движение змейки без задержки на ожидания ввода
Я вот пишу змейку и у меня встал вопрос. Змейка движется сама, то есть мы управляем только ее...

GUI для консольного приложения. Получить состояние ожидания ввода
Доброго времени суток. В общем ситуация следующая. Пишу GUI для внутри-офисной консольной тулзы, и...

3
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 28
02.03.2016, 03:17  [ТС] 2
как я сам успел понять, переменная записывает после себя \n, есть ли выход из этого положения? кроме создания массивов
0
Вездепух
Эксперт CЭксперт С++
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,071
02.03.2016, 07:46 3
Лучший ответ Сообщение было отмечено okaio как решение

Решение

Цитата Сообщение от okaio Посмотреть сообщение
как я сам успел понять, переменная записывает после себя \n, есть ли выход из этого положения?
Выход заключается в том, чтобы попросить 'scanf' пропустить все накопившиеся во входном потоке whitespace символы (пробелы, переводы строки, табуляции) перед тем, как читать выбор пользователя.

C
1
scanf (" %c", &var);
Т.е. просто добавить пробел преред '%c' в форматной строке.
2
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 28
03.03.2016, 00:12  [ТС] 4
спасибо,у пратта только % рассмотрены относительно строк и типов данных, а такие приятные мелочи не описаны
0
03.03.2016, 00:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2016, 00:12
Помогаю со студенческими работами здесь

Получить код нажатой клавиши без ожидания ввода в консоли
Задание сделать консольный арканоид. Естественно, что нужно получить управление и при этом игра...

Контест на строки и реализация ввода
Форумчане, помогите с решением задач для отсылки на контест. Проблема в том, что в условии...

Реализация защиты ввода от дурака
Доброго времени суток! Имеется тривиальная программа var a:byte; begin Readln(a); end. ...

реализация алгоритма пошагового ввода
Доброго время суток! Помогите пожалуйста! Написать программу, вычерчивающую заданный выпуклый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru