Написать программу, которая при нажатии клавиши ESC выводит окно-диалог о необходимости завершения программы. В окне диалога выводятся два подокна с надписями «Да», «Нет», выбор которых осуществляется нажатием клавиши Tab. При выборе окна «Да» и нажатии клавиши Enter программа завершается, а при выборе окна «Нет» — продолжает работу. Помогите пожалуйста, я начинающий и не имею понятия как это сделать. В интернете нашел какой-то код но совсем не знаю как его править, поэтому прошу помощи у вас, и не знаю вообще он мне подходит.
#include #include «resource.h» //собственная процедура для обработки BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) < int ret = DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc); if (ret == 0) < //Если была нажата кнопка Отмена или крестик MessageBox(NULL, (LPCTSTR)»Отмена», «Inform», MB_OK | MB_ICONINFORMATION); >else if (ret == 1) < //Если была нажата кнопка Ок MessageBox(NULL, (LPCTSTR)»Ок», «Inform», MB_OK | MB_ICONINFORMATION); >return ret; > BOOL CALLBACK DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) < switch (msg) < case WM_INITDIALOG: < return FALSE; >case WM_COMMAND: < switch (LOWORD(wParam)) < case IDOK: EndDialog(hwnd, 1); return TRUE; case IDCANCEL: EndDialog(hwnd, 0); return TRUE; >> case WM_CLOSE: < EndDialog(hwnd, 0); return FALSE; >> return FALSE;//нужно что бы вызвать функцию для прорисовки окда //return TRUE;//не будет вызыватся функция протисовки окна >
Пробовал скомпилировать, однако обнаруживаются следующие ошибки:
Как пишут крутые диалоги в кино — Тарантино, Эдгар Райт и МакДона
Не удаётся открыть файл включение: resource.h: No such file or directory не удаётся открыть источник файл «resource.h» идентификатор «IDD_DIALOG1» не определён аргумент типа «const char*» несовместим с параметром типа «LPCWSTR»
Источник: ru.stackoverflow.com
Условия Си. Диалог
Программа провдит диалог с человеком, узнает его интересы Программа запрашивает имя пользователя, приветствует его по имени.Запрашивает и анализирует возраст.(молодой, средних лет или пожилой) . Задает вопросы о любимом цвете, стиле музыки, типах книг и другие. Проверяет схожесть интересов, выводит информацию о схожести интересов. При написании программы полезными будут уроки Вывод информации на экран в Си Условия в Си
Описание алгоритма программы на Си для диалога скомпьютером
На этом уроке мы напишем программу на Си анкета, диалог с компьютером. Вначале программы определяются ответы по каждому вопросу, для этого вводятся для каждого вопроса своя переменная и присваивается ей нужное значение.Например:
КАК ПИСАТЬ ДИАЛОГИ: ПУСТОЙ ДИАЛОГ И АТРИБУЦИЯ
int age=40;// возраст
int cvet=1;// номер любимого цвета 1 –зеленый 2-красный 3-синий 4-желтый 5-черный 6 — другой
int music=1;// номер стиля музыки 1 — рок 2 — поп 3 — классика 4 — джаз 5 -металл 6 — реп 7 – другой
Программа должна задавать вопросы с различными вариантами ответов. Пользователь вводит номер ответа. Ответ пользователя сравнивается с определенным ответом в начале программы.
printf(«Какой Ваш любимый цвет? 1 -зеленый 2-красный 3-синий 4-желтый 5-черный 6 — другойn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==cvet)
k=k+1;// увеличиваем счетчик правильных ответов
>
Чтобы подсчитать количество совпавших ответов используется специальная переменная счетчик ответов k.
В конце теста производится проверка количества совпавших ответов, если количество больше заданного параметра, то выводится сообщение о схожести интересов.
// анализ количества совпавших ответов
if (k>2)
printf («У нас с Вами %s очень много схожего. Мы сможем подружиться n»,n);
>
else
printf («Мы с Вами %s очень разные n», n);
>
Пример полного решения программа на си диалог с компьютером,анкетирование
#include
#include
#include
main()
char n[50];// объявляем строковую переменную n для имени
int k; // счетчик совпадающих ответов
int a; // номер текущего ответа
int age=40;// возраст
int cvet=1;// номер любимого цвета 1 -зеленый 2-красный 3-синий 4-желтый 5-черный 6 — другой
int music=1;// номер стиля музыки 1 — рок 2 — поп 3 — классика 4 — джаз 5 -металл 6 — реп 7 — другой
int book=2;// номер вида книг 1 — детективы 2-фантастика 3- классика 4 — научная литература 5 -развлекательные журналы 6 — другие
int film=2;// номер типа фильмов 1 — боевики 2-фантастика 3-детективы 4-исторические 5-сериалы 6 -другие
k=0;// обнуление счетчика совпавших ответов
// приветствие
printf(«Как Ваше имя ?n «);
scanf(«%s», n); // ввод строки n имени
printf(«Здравствуйте, %s! Очень хотелось бы узнать тебя получше. Ответьте пожалуйстаn», n); // форматированный вывод Здравствуйте, n !
// 1 вопрос
printf(«Каков Ваш возраст?n»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (abs(a-age) <5)
printf(«Здорово! мы ровесники «);
k=k+1;// увеличиваем счетчик правильных ответов
>
// 2 вопрос
printf(«Какой Ваш любимый цвет? 1 -зеленый 2-красный 3-синий 4-желтый 5-черный 6 — другойn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==cvet)
k=k+1;// увеличиваем счетчик правильных ответов
>
// 3 вопрос
printf(«Какой Ваш любимый стиль музыки? 1 — рок 2 — поп 3 — классика 4 — джаз 5 -металл 6 — реп 7 — другойn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==music)
k=k+1;// увеличиваем счетчик правильных ответов
>
// 4 вопрос
printf(«Какой Вы любите читать книги? 1 – детективы 2-фантастика 3- классика 4 — научная литература 5 -развлекательные журналы 6 — другиеn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==book)
k=k+1;// увеличиваем счетчик правильных ответов
>
// 5 вопрос
printf(«Какой Вам нравятся фильмы? 1 — боевики 2-фантастика 3-детективы 4-исторические 5-сериалы 6 -другиеn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==film)
k=k+1;// увеличиваем счетчик правильных ответов
>
// анализ количества совпавших ответов
if (k>2)
printf («У нас с Вами %s очень много схожего. Мы сможем подружитьсяn»,n);
>
else
printf («Мы с Вами %s очень разныеn», n);
>
На заметку:
1. В программе введен счетчик правильных ответов переменная k . В начале программы она обнуляется k=0. Если ответ пользователя совпадает с заданным в программе, то счетчик увеличивается k=k+1.
Задания для самостоятельной работы:
1 В диалоге добавьте несколько своих вопросов. Не забудьте ввести для них переменные с правильными ответами в начале программы.
2. Напишите программу тест по любимому предмету. Программа задает и запрашивает ответы по избранной теме. Подсчитывает количество верных ответов. В конце теста выставляет оценку исходя из количества правильных ответов.
Возможный вариант реализации тест на си
#include
#include
main()
char n[50];// объявляем строковую переменную n для имени
int k; // счетчик правильных ответов
int a; // номер ответа
k=0;
// приветствие
printf(«Как Ваше имя ?n»);
scanf(«%s», n); // ввод строки n имени
printf(«Здравствуйте, %s! Вам предлагается тест по географииn», n); // форматированный вывод Здравствуйте, n !
// 1 вопрос теста
printf(«Столица Антигуа и Барбуда? Введите номер правильного ответаn»);
printf(«1. Сент-Джонс 2. Сукре 3. Бужумбура 4. Банжул 5. Бисауn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==1)
printf(«Правильно «);
k=k+1;// увеличиваем счетчик правильных ответов
>
else printf(«Не правильно «);
>
// 2 вопрос теста
printf(«Лидер по добыче каменного угля? Введите номер правильного ответаn»);
printf(«1. Россия 2. Индия 3. США 4. Китай 5. Австралияn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==4)
printf(«Правильноn»);
k=k+1;// увеличиваем счетчик правильных ответов
>
else printf(«Не правильноn»);
>
// 3 вопрос теста
printf(«Самая высокая гора? Введите номер правильного ответаn»);
printf(«1. Чогори 2. Канченджанга 3. Эверест 4. Джомолунгма 5. Эльбрусn»);
// запрашиваем ответ
scanf(«%d»,
// проверяем правильность ответа
if (a==4)
printf(«Правильноn»);
k=k+1;// увеличиваем счетчик правильных ответов
>
else printf(«Не правильноn»);
>
Полезно почитать по теме условия в си
Условия в Си
Решение линейного уравнения на Си
Источник: itrobo.ru
Программирование диалога с компьютером
- Любую программу составлять нужно так, чтобы ее исполнение реализовывало диалог между компьютером и пользователем в понятной для человека форме.
Сценарий диалога
- Прежде чем начать составление программы, нужно продумать сценарий такого диалога.
Введите первое слагаемое: А = 237
Введите второе слагаемое: В = 658
А + В = 895
Любой вывод на экран происходит по оператору вывода, записанному в программе
- с помощью оператора вывода на экран выносятся не только результаты решения задачи, но и все элементы диалога со стороны компьютера.
Вот программа, которая реализует наш сценарий:
Program Summa;
var А , В : integer;
write (‘Введите первое слагаемое: А =’);
write (‘Введите второе слагаемое: В =’);
writeln(‘А + В = ‘, А+В);
Сценарий работы программы — это описание ее общения с пользователем (пользовательского интерфейса).
Интерфейс обязательно должен быть дружественным. Любой символьный вывод на экран программируется с помощью оператора write или writeln .
Ветвления и исполнение диалога между компьютером и пользователем:
- Вася собирает древние монеты. Он приобреладинариев иbсестерциев разного достоинства и года выпуска. Хватит ли ему места в альбоме, если там всегосячеек для монет?
- ветвления.ppt
Program money;
A,b,c: integer;
Write(‘Сколько динариев купил Вася? ‘); readln(a);
Write(‘Сколько сестерциев купил Вася? ‘); readln(b);
Write(‘Cколько свободных ячеек в альбоме? ‘); readln(с);
If a+b then
Writeln(‘Места в альбоме хватит’)
Writeln(‘Места а альбоме не хватит’);
Бой со змеем Горынычем
Собрался Иван-царевич на бой со Змеем Горынычем, трехглавым и треххвостым.
— Вот тебе меч-кладинец –говорит ему баба Яга. – одним ударом ты можешь срубить либо голову, либо две головы, либо один хвост, либо два хвосты. Но запомни: срубишь один хвост – два вырастут, срубишь два хвоста – голова вырастет, срубишь голову – голова вырастет, срубишь две головы – ничего не вырастет.
За сколько ударов Иван-царевич может срубить Змею Горынычу все головы и все хвосты?
Этапы решения расчетной задачи на компьютере
1. Постановка задачи.
2. Математическая формализация.
3. Построение алгоритма.
4. Составление программы на языке программирования.
5. Отладка и тестирование программы.
6. Проведение расчетов и анализ полученных результатов.
N – число ударов?
Ввод RG и RX
Если срубить 1 голову(RG=1), то голова вырастет (N=N+1)
Если срубить 2 головы(RG=2), то ничего не вырастет (G=G-2 , N=N+1)
Если срубить 1 хвост(RX=1), то 2 хвоста вырастут (X=X+1, N=N+1)
Если срубить 2 хвоста(RX=2), то голова вырастет (G=G+1 , X=X-2, N=N+1)
Алгоритм решения
- Алгоритм решения данной задачи будет циклическим. С циклическими алгоритмами вы уже познакомились, работая с графическим исполнителем.
- Цикл — это команда исполнителю многократно повторить указанную последовательность команд.
Цикл с предусловием
Сколько различных слов можно составить из N букв (слова не обязательно должны иметь смысл)
« Цикл с предусловием »: пока истинно условие цикла, повторяется выполнение тела цикла .
while do
- Служебное слово while означает «пока», do — «делать», «выполнять».
- Оператор, стоящий после слова do, называется телом цикла. Тело цикла может быть простым или составным оператором, т. е. последовательностью операторов между служебными словами begin и end.
Алгоритм решения:
((G0) and (X0)) or ((G0) and (X=0))or ((G=0) and (X0)) ?
Что будем рубить?
Ввод ( голов ) RG, (хвостов) RX
(RX=0) and (RG0) ?
Источник: videouroki.net