Программа на С++: вопрос пользователю

Уровень сложности:

Написать программу, которая задает пользователю вопрос (вопрос полагает однозначный ответ, типа да нет). Проверить правильность вопроса. Дать пользователю несколько подсказок и попыток ответить на вопрос. Если он угадал спросить у него имя, и вывести на экран поздравление, которое есть конкатенацией нескольких строк, дважды использовав его имя.

CppStudio.com
Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 0

Подумайте внимательно :)
Подсказка: число заканчивается на 09
Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 1

Вы правильно ответили на вопрос!!!  Введите Ваше имя (латиницей): Denis

Denis ,от всей души поздравляем Вас!!! Все цветы у Ваших ног,  Denis!!!
Эта музыка для Вас!!!

Данное решение предоставила — Лилия Марьенко, поблагодарим её. Исходный код — ниже:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
        setlocale(LC_ALL, "rus");

        int answer = 0;// ответ пользователя
        char *name = new char[30];//сюда считаем Имя пользователя

        //набор поздравительных строк
        char str1[] = " ,от всей души поздравляем Вас!!!";
        char str2[] = " Все цветы у Ваших ног,  ";
        char str3[] = "!!!\nЭта музыка для Вас!!!\a\a\a\a\a\a\a\a\a\a\a\a\a";
        char congratulation [200] = {};//строка в которую скопируем весь текст поздравления

        //задаем вопрос пользователю
        cout << "Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): ";
        cin >> answer;

        while (answer != 1)// пока ответ не равен 1(да)
        {
                if(answer == 0) //если нажал 0(нет) выдаем подсказку
                {
                        cout << "\nПодумайте внимательно :)" << endl;
                        cout << "Подсказка: число заканчивается на 09" << endl;
                        cout << "Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): ";
                        cin >> answer;
                }
                        else //если пользователь ввел другое число (не 0 и не 1)
                        {
                                cout << "\nНекорректный ввод! " << endl;
                                cout << "Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): ";
                                cin >> answer;
                        }
        }

        if (answer == 1)//если ответ правильный
                {
                        cout << "\n\nВы правильно ответили на вопрос!!!  Введите Ваше имя (латиницей): ";
                        cin >> name;
                }

        cout << endl << endl;

        //копируем имя и все поздравления в одну строку
        strcat(congratulation, name);
        strcat(congratulation, str1);
        strcat(congratulation, str2);
        strcat(congratulation, name);
        strcat(congratulation, str3);

        //выводим поздравление на экран
        cout << congratulation;
        cout << endl << endl;

delete [] name;//освобождаем память
return 0;
}


Смотрим результат работы программы, он очень даже необычный.

CppStudio.com
Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 0

Подумайте внимательно :)
Подсказка: число заканчивается на 09
Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 1

Вы правильно ответили на вопрос!!!  Введите Ваше имя (латиницей): Denis

Denis ,от всей души поздравляем Вас!!! Все цветы у Ваших ног,  Denis!!!
Эта музыка для Вас!!!

Вот собственно и он! Кстати говоря, в комментариях также есть достаточно интересное решение данной задачи, если не верите, посмотрите сами.

Следующие статьи помогут вам в решении данной задачи:
Автор: Marienko L.
Дата: 17.11.2012
Поделиться:

Комментарии

  1. Василий

    Василий

    Сделал немного по-другому, поскольку не смотрел исходный код:

    #include <iostream>
    #include <string>
    using namespace std;
    
    
    struct quiz
    {
        string question;
        char answer;
        char answer2;
        string congrad;
        string help;
        string name;
    };
    
    
    int main()
    {
        setlocale(LC_ALL, "Russian");
        char a;
        quiz q;
        q.question = "Вторая мировая война началась 1939 году y/n?";
        q.answer = 'y';
        q.answer2 = 'n';
        q.congrad = " поздравляем! Вы дали правильный ответ";
        q.help = "Подсказка следующая: год начала ВМВ кончается числом 9";
        //q.name = NULL;
        cout << q.question << "\n";
        cin >> a;
    
    
       do {
               cout << q.help << endl;
                cout << "Попытайтесь ответить еще раз. " << q.question << endl;
                cin >> a;
            }
        while (a != q.answer);
        if(a == q.answer)
        {
            cout << "Введите свое имя" << endl;
            cin >> q.name;
            cout << q.name << q.congrad << endl;
        }
        return 0;
    }
  2. Anufree

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    bool Y_N();
    void Name();
    
    int main(int argc, char** argv)
    
    {
    	setlocale(LC_ALL, "Russian");
    
    	do
    	{
    		cout << "В диапазоне от 1 до 100 сколько не четных цифр 50?" << endl;
    	}while(Y_N());
    
    	system("pause");
    
    	return 0;
    }
    
    bool Y_N() 
    { 
    	char c; 
    	while(true) 
    	{ 
    		cout << "y/n: "; 
    		cin>> c; 
    		if(c == 'Y' || c == 'y')
    		{
    			Name();
    			return false;
    		}
    		else if(c == 'N' || c == 'n')
    			cout << "Ответ содержит 5." << endl;
    		else 
    			cout <<"!!! Enter y/n." << endl; 
    	} 
    } 
    
    void Name()
    {
    	string n;
    	cout << "Вы правильно ответили на вопрос!!! Введите Ваше имя (латиницей): ";
    	cin >> n;
    	cout << n << " , от всей души поздравляем Вас!!! Все цветы у Ваших ног, " << n << endl;
    	cout << "Эта музыка для Вас" << endl;
    }

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.