![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Процедуры формы 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 и откорректируем функции. void CPerevozkaPredmetovDlg:: OnButton2() //кнопка «Очистить» { m_label1.SetCaption(" "); m_label2.SetCaption(" "); m_label3.SetCaption(" "); m_label4.SetCaption(" "); m_label5.SetCaption(" "); m_edit1=" "; m_edit2=" "; m_edit3=" "; m_edit4=" "; m_edit5=" "; m_edit6=0; m_edit7=0; m_edit8=0; m_edit9=0; m_edit10=0; m_edit11=0; m_edit12=0; m_edit13=0; m_edit14=0; m_edit15=0; m_edit16=0; UpdateData(0); //обновление объектов формы } void CPerevozkaPredmetovDlg:: OnButton3() //кнопка «Перевезти» { float tekst, maxst=0; char x1, x2, x3, x4, x5, y1, y2, y3, y4, y5; //объявления UpdateData(1); //обновление значений назначенных объектам переменных for (x1=0; x1< =1; x1++) //циклы перебора всех вариантов перевозок for (x2=0; x2< =1; x2++) for (x3=0; x3< =1; x3++) for (x4=0; x4< =1; x4++) for (x5=0; x5< =1; x5++) if ((x1*m_edit6+x2*m_edit7+x3*m_edit8+x4*m_edit9 +x5*m_edit10) < =m_edit16) //допустимый вариант перевозки { tekst=x1*m_edit11+x2*m_edit12+x3*m_edit13+x4*m_edit14+ x5*m_edit15; //стоимость перевозимых предметов if (tekst> maxst) //запоминание лучшего варианта перевозки { maxst=tekst; y1=x1; y2=x2; y3=x3; y4=x4; y5=x5; } } //конец циклов перебора всех вариантов перевозки предметов //вывод лучшего варианта перевозки в поля меток m_label1.SetCaption((y1*m_edit6*m_edit11> 0)? " перевозить": " "); m_label2.SetCaption((y2*m_edit7*m_edit12> 0)? " перевозить": " "); m_label3.SetCaption((y3*m_edit8*m_edit13> 0)? " перевозить": " "); m_label4.SetCaption((y4*m_edit9*m_edit14> 0)? " перевозить": " "); m_label5.SetCaption((y5*m_edit10*m_edit15> 0)? " перевозить": " "); } BOOL CPerevozkaPredmetovDlg:: OnInitDialog() //инициализация формы {... //неизменяемая часть функции OnButton2(); //вызов функции обработки кнопки «Очистить» return TRUE; }
|