Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

Void __fastcall tForm1::Button6Click(tObject *Sender) //кн. “Подтвердите”

{f=Form3->Edit1->Text; c=f.Length(); w=0;

b=Edit1->Text; // запоминается введенная буква

b=AnsiLowerCase(b); // возвращается буква в нижнем регистре

for (i=1;i<=c;i++) // в цикле введенная буква сравнивается с i-й

// буквой слова

{ p=f.SubString(i,1); // возвращает i-ю букву загаданного слова

p=AnsiLowerCase(p); // возвращается буква в нижнем регистре

if (p==b)

{u=u+1; // в переменной считается количество угаданных букв

w=w+1; // в переменной считается, сколько раз

// введенная буква встречается в слове

switch (i) // вывод угаданной буквы

{case 1: StaticText1->Caption=b; break;

case 2: StaticText2->Caption=b; break;

case 3: StaticText3->Caption=b; break;

case 4: StaticText4->Caption=b; break;

case 5: StaticText5->Caption=b; break;

case 6: StaticText6->Caption=b; break;

case 7: StaticText7->Caption=b; break;

case 8: StaticText8->Caption=b; break;

case 9: StaticText9->Caption=b; break;

case 10: StaticText10->Caption=b; break;}

}

}

Edit1->Enabled=false; Button5->Enabled=true;

if (w!=0)

switch (g)

{case 1: // умножение набранных очков, если буква // в слове встречается более одного раза

{x1=x1*w; e=IntToStr(x1);

Label5->Caption="Игрок1, Ваш выигрыш - "+e;} break;

case 2:

{y1=y1*w; e=IntToStr(y1);

Label6->Caption="Игрок2, Ваш выигрыш - "+e;} break;}

// если буква названа неверно, то ход передается другому игроку

else

if (Label4->Caption=="Игрок1, Ваш ход")

Label4->Caption="Игрок2, Ваш ход";

else Label4->Caption="Игрок1, Ваш ход";

if (u==c) {Label3->Caption="ВЫ УГАДАЛИ !!!";

Label4->Visible=false; Button4->Enabled=false; Button5->Enabled=false;}

Button6->Enabled=false;

// если количество угаданных букв совпадает с длиной слова, то

// выводится надпись “ВЫ УГАДАЛИ !!!” и блокируются все объекты

// кроме кнопки «Выход»

}

Процедуры формы Form2 (Unit2)

int f; String s,t;

Void __fastcall tForm2::Button1Click(tObject *Sender) //кн. “Подтвердите”

{s=DateToStr(Date()); //преобразование даты в строку

t=Edit1->Text;

f=AnsiCompareText(s,t); //сравнение пароля пользователя с датой, которая и

//является паролем

if (f==0) {Form3->Visible=True; Form3->SetFocus(); Form2->Close();}

else {Application->MessageBox("Введен неправильный пароль","Внимание", 1);

Edit1->SetFocus();} //вывод сообщения и передача фокуса полю ввода пароля

}

Процедуры формы Form3 (Unit3)

String f; int c, i;

Void __fastcall tForm3::Button1Click(tObject *Sender) // кн. “Сохранить”

{ Form1->Visible=true; //визуализация формы Поле Чудес

Form1->Label1->Caption=Memo1->Text; //вывод на форму вопроса

f=Edit1->Text; c=f.Length();

for (i=1;i<=c;i++) // вывод соответствующего числа компонентов StaticText

{switch (i)

{case 1: Form1->StaticText1->Visible=true; break;

case 2: Form1->StaticText2->Visible=true; break;

case 3: Form1->StaticText3->Visible=true; break;

case 4: Form1->StaticText4->Visible=true; break;

case 5: Form1->StaticText5->Visible=true; break;

case 6: Form1->StaticText6->Visible=true; break;

case 7: Form1->StaticText7->Visible=true; break;

case 8: Form1->StaticText8->Visible=true; break;

case 9: Form1->StaticText9->Visible=true; break;

case 10: Form1->StaticText10->Visible=true; break;}

}

Form1->SetFocus(); //передача фокуса первой форме

Form3->Close(); //и закрытие текущей формы

}

void __fastcall TForm3::FormActivate(TObject *Sender)

{Memo1->SetFocus(); } //передача фокуса полю для ввода вопроса

8.1.10. Перевозка ценных предметов (Visual C++)

Нужно перевезти автомобилем до пяти предметов. Грузоподъ­ем­ность автомобиля ограничена, а суммарный вес предметов может превы­шать эту грузоподъемность. Из всех возможных вариантов перевоз­ки нуж­но выбрать вариант с наибольшей суммарной стоимостью перевози­мых предметов суммарным весом в пределах грузоподъемности ав­то­мо­биля. Задача относится к классу целочисленных опти­ми­зационных задач.

Составим форму для ввода и вывода данных (рис. 8.1.10.1).

Рис. 8.1.10.1. Вид формы приложения

  1. Создадим папку для хранения элементов приложения.

  2. Выполнить команду New/Project/MFC AppWizard (exe).

  3. Введем в поле Project Name имя программы PerevozkaPredmetov и нажмем кнопку OK.

  4. На первом шаге мастера выберем вариант создания диалогового приложения (Dialog based) и нажмем кнопку Next.

  5. Последовательно пройдем все остальные шаги мастера (всего четыре шага) и нажмем кнопку Finish. Сформируется заготовка окна.

  6. Удалим с формы текст TODO: Place dialog control here и кнопку Cancel. Кнопку OK переименуем в Выход.

  7. Выполним команду Properties контекстного меню элемента PerevozkaPredmetov resources/Dialog/IDD_ PerevozkaPredmetov_Dialog и в поле Language выберем Russion.

  8. В окне свойств формы зададим наименование формы Перевозка ценных предметов (свойство Caption).

  9. Разместим элементы Text Box: IDC_EDIT1 - IDC_EDIT5 (колон­ка наиме­но­ваний предметов), IDC_EDIT6 - IDC_EDIT10 (колонка весов предметов), IDC_EDIT1 - IDC_EDIT15 (колонка стоимости пред­ме­тов), IDC_EDIT16 (ограничение на грузоподъемность автомобиля). Назначим для этих полей переменные m_edit1 - m_edit5 (типа String) и m_edit6- m_edit16 (типа Float).

  10. Разместим ActiveX‑элементы Label (Microsoft Forms 2.0 Label) IDC_LABEL1 - IDC_LABEL1 для вывода колонки сообщений о перевозке предметов. Назначим для них объектные переменные m_label1 - m_label5 (категории Control).

  11. Разместим две кнопки Очистить и Перевезти.

  12. Нажмем кнопку Edit Code и откорректируем функции.