Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SunNas
Сообщений: n/a
#1

Написать программу-тестирование - C++

08.10.2012, 14:24. Просмотров 578. Ответов 2
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста!
Надо написать программу, что-то типа анкеты, в зависимости от ответов да или нет задаются следующие вопросы.
...
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
char yn,y;
M1:   printf("Вы живете в России? Введите 'y'=да или 'n'=нет\n");
    scanf("%c",&yn);
    printf("\nВаш ответ %c \n",yn);
    if(yn=='y')
    {
        printf("Вы живете в городе? Введите 'y'=да или 'n'=нет\n");
            scanf("%c",&y);
        
                if(y=='y')
        {
        printf("Вы горожанин\n");
        
        } 
        else
               {printf("Вы живете в деревне?\n");
               if(y=='y') printf("Вы не горожанин\n");
        }
        
    }
    if(yn=='n')
    {
        printf("Извините, в опросе принимают участие только жители России\n");
        _getch();
        return 1;
    }
    else
    {
        printf("Введены некорректные данные. Введите 'y' или 'n'\n");
        goto M1;
        
    }
    _getch();
    return 0;

Почему-то, если на вопрос "Вы живете в России?" ответить "y", задается второй вопрос "Вы живете в городе?" и, не дожидаясь ответа происходит выход из программы. Из-за чего так происходит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2012, 14:24     Написать программу-тестирование
Посмотрите здесь:

C++ Написать программу в C++
Написать программу C++
C++ Разработать программу, выполняющую тестирование работоспособности модуля
Написать программу C++
Написать программу C++
Написать программу C++
C++ Написать программу «Тестирование знаний» (Visual C++)
C++ Написать программу в C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
08.10.2012, 14:43     Написать программу-тестирование #2
Потому что первый раз если ввести 'y' и нажать enter, в считается 1 символ, а введено было больше(перевод на новую строку) и при следующем вызове функции scanf считается перевод на новую строку, и это не подойдет под следующие условия.
C++
1
2
3
4
5
char y[2];
scanf("%s", y);
if (y[0] == 'y') {
 
}
такой способ не хороший, потому что при вводе больше 1 символа (без учета перевода на новую строку) будет утечка памяти.
SunNas
Сообщений: n/a
09.10.2012, 11:05     Написать программу-тестирование #3
Спасибо огромное!!! Очень помогли!!!
Yandex
Объявления
09.10.2012, 11:05     Написать программу-тестирование
Ответ Создать тему
Опции темы

Текущее время: 00:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru