Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 06.10.2019, 15:07   #1
Vladusss
Новичок
 
Регистрация: 06.10.2019
Сообщений: 1
Репутация: 10
По умолчанию [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, 11:08   #2
digitalis
Профессионал
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Адрес: Минск
Сообщений: 1,756
Репутация: 587
По умолчанию

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

Последний раз редактировалось digitalis; 08.10.2019 в 11:33.
digitalis вне форума   Ответить с цитированием
Старый 08.10.2019, 19:52   #3
Desc
Developer
ФорумчанинФорумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Адрес: Ukraine
Сообщений: 210
Репутация: 51
По умолчанию

После ввода символа как ни крути 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);
Этот код без проверки корректности ввода.

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

Я давно на Си не работал, но вроде как по 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, 22:37   #5
Desc
Developer
ФорумчанинФорумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Адрес: Ukraine
Сообщений: 210
Репутация: 51
По умолчанию

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

P. S.
Полагаю что вместо n можно будет жать любую клавишу.

Последний раз редактировалось Desc; 08.10.2019 в 22:50.
Desc вне форума   Ответить с цитированием
Старый 10.10.2019, 01:04   #6
Desc
Developer
ФорумчанинФорумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Адрес: Ukraine
Сообщений: 210
Репутация: 51
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


09:53.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.