Написать программу, которая задает пользователю вопрос (вопрос полагает однозначный ответ, типа да нет). Проверить правильность вопроса. Дать пользователю несколько подсказок и попыток ответить на вопрос. Если он угадал спросить у него имя, и вывести на экран поздравление, которое есть конкатенацией нескольких строк, дважды использовав его имя.
Год рождения Николая Васильевича Гоголя - 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;
}
Смотрим результат работы программы, он очень даже необычный.
Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 0 Подумайте внимательно :) Подсказка: число заканчивается на 09 Год рождения Николая Васильевича Гоголя - 1809г.? (да - 1, нет - 0): 1 Вы правильно ответили на вопрос!!! Введите Ваше имя (латиницей): Denis Denis ,от всей души поздравляем Вас!!! Все цветы у Ваших ног, Denis!!! Эта музыка для Вас!!!
Вот собственно и он! Кстати говоря, в комментариях также есть достаточно интересное решение данной задачи, если не верите, посмотрите сами.
Комментарии
Василий
Сделал немного по-другому, поскольку не смотрел исходный код:
{{do {{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; }