Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2019, 14:07   #1
Vladusss
Новичок
Джуниор
 
Регистрация: 06.10.2019
Сообщений: 1
По умолчанию [C] выход из программы по вводу символа "y"

"Написать программу, которая позволяет пользователю пополнять счет через терминал.
В конце программы пользователю предоставляется выбор: завершить программу или запустить вновь."

После ввода "y" программа должна выйти из цикла и завершиться, но у меня получается.
Пробовал разные способы - никак.
И преподаватель говорила, что это делается с помощью "getch()"

Код:
int s,a;

    char c='y',g[1];
    s=0;
    do
    {
    a=0;
    printf("Введите сумму,на которую нужно пополнить счёт\n");
    scanf("%d",&s);
    printf("Ваш счёт пополнен на %d \n",s);
    printf("Завершить программу? y/n? \n");
    scanf("%s",g);
     if(g=='y')
        a=27;
     else
        a=0;
    }
    while (a != 27);
    a=getch();
Vladusss вне форума Ответить с цитированием
Старый 08.10.2019, 10:08   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Можно и так, только придется нажать y и Enter
Код:
     if(g=='y')  a=27;
Ну а эти реверансы зачем? Почему в while не проверять саму g ?

Последний раз редактировалось digitalis; 08.10.2019 в 10:33.
digitalis вне форума Ответить с цитированием
Старый 08.10.2019, 18:52   #3
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

После ввода символа как ни крути Enter жать нужно.
В качестве примера по работе с выбором (y/n)
Код:
int a;
a = 0;
do
{
int k, s;
std::cout << "Выйти из программы? (y/n)? " << std::endl;
k = getchar();
if (k == 'y' || k == 'Y') { a = 1;  exit(0); }
if (k == 'n' || k == 'N')
{
std::cout << ("Введите сумму,на которую нужно пополнить счёт\n");
std::cin >> s;
std::cout << ("Ваш счёт пополнен на ") << s;
std::cout << std::endl;
//a = 1;
}} while (a != 1);
Этот код без проверки корректности ввода.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 08.10.2019 в 18:56.
Desc вне форума Ответить с цитированием
Старый 08.10.2019, 19:42   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Я давно на Си не работал, но вроде как по getchar символ сразу воспринимается прогой. Другое дело, что нужно вводить не в массив символов - сиречь строку, а в одиночный.
Код:
    char c='y',g;
    s=0;
    g = '.' ;
    do
    {
    printf("Введите сумму,на которую нужно пополнить счёт\n");
    scanf("%d",&s);
    printf("Ваш счёт пополнен на %d \n",s);
    printf("Завершить программу? y/n? \n");
    с=getch();
   }
    while (с != 'y');
digitalis вне форума Ответить с цитированием
Старый 08.10.2019, 21:37   #5
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Думаю нужно слегка подправить объявление переменных
Код:
char g;
и в цикле
Код:
g = getch();
} while (g != 'y');
если выполнять в Microsoft VS тогда:
Код:
g = _getch();	
} while (g != 'y');
_getch с подчеркиванием.

P. S.
Полагаю что вместо n можно будет жать любую клавишу.
I am not a wizard, I am just learning.

Последний раз редактировалось Desc; 08.10.2019 в 21:50.
Desc вне форума Ответить с цитированием
Старый 10.10.2019, 00:04   #6
Desc
Участник клуба
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 1,063
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
по getchar символ сразу воспринимается прогой
Возьму на себя смелость поправить.
Функция getchar - ввод более одного символа с последующим ожиданием нажатия клавиши ввода.
Функция getch - ввод одного символа с немедленной обработкой (скан клавиатуры и немедленная обработка нажатой клавиши, без необходимости подтверждения клавишей ввода).
I am not a wizard, I am just learning.
Desc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выход из программы с++ Дмитрий224 Общие вопросы C/C++ 2 01.09.2015 18:19
Кнопка Выход(на выход Из программы)С++ Напишите код ProGec4 Общие вопросы C/C++ 3 19.02.2012 15:36
Выход программы. ZvEr_HaCkEr Свободное общение 26 16.10.2010 21:00
Выход из программы relav_ Общие вопросы Delphi 18 15.03.2008 01:36
Выход из программы Slash Общие вопросы Delphi 8 24.03.2007 07:53