Задача
Розробити програму для перевірки, чи поміститься прямокутна листівка з розмірами А і В у конверт з розмірами К і М так, щоб сторони листівки і конверта були попарно паралельні.
Опис роботи програми
- Вікно програми після запуску має такий вигляд:
- Після введення даних про розміри до текстових полів і клацання кнопки нижній напис («***») змінюється на один з трьох: «Листівка поміститься», «Листівка не поміститься» або «Перевірка неможлива. Некоректні дані».
- При редагуванні даних в текстових полях нижній напис знову набуває попереднього вигляду («***»).
Послідовність виконання
1) Створити проект за шаблоном Windows Forms Application і назвати його UsingIf.
2) Розмістити на формі три написи (Label
), чотири текстових поля (TextBox
) та кнопку (Button
) так, як показано на малюнку.
3) Для кнопки написати такий обробник події Click
:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
double A,B,K,M;
A=Convert::ToDouble(textBox1->Text);
B=Convert::ToDouble(textBox2->Text);
K=Convert::ToDouble(textBox3->Text);
M=Convert::ToDouble(textBox4->Text);
if ((K<A)&&(M<B)||(M<A)&&(K<B))
label3->Text="Листівка поміститься";
else
label3->Text="Листівка не поміститься";
}
Перевірте працездатність програми при введенні правильних даних. Для введення десяткових дробів використовуйте, як розділювач, кому. Переконайтесь, що при введенні некоректних даних виконання програми аварійно завершується.
Для виходу з діалогового вікна, що повідомляє про помилку слід скористатись кнопкою Break, а після цього припинити сеанс відлагодження, подавши у вікні системи програмування команду меню Debug/Stop Debugging.
4) Створіть для події TextChanged текстових полів обробники, що містять лише одну команду:
label3->Text="***";
Переконайтесь, запустивши програму, що при редагуванні даних у текстових полях нижній напис відображає зірочки і лише при клацанні кнопки виводить результат перевірки.
5) Для того, щоб уникнути аварійного припинення роботи програми скористаємося механізмом обробки виняткових ситуацій (try{}catch(…){}
). Для цього код обробника для кнопки слід змінити так :
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
double A,B,K,M;
try { //Початок захищеного блоку
A=Convert::ToDouble(textBox1->Text);
B=Convert::ToDouble(textBox2->Text);
K=Convert::ToDouble(textBox3->Text);
M=Convert::ToDouble(textBox4->Text);
if ((K<A)&&(M<B)||(M<A)&&(K<B))
label3->Text="Листівка поміститься";
else
label3->Text="Листівка не поміститься";
} //Кінець захищеного блоку
catch (...) //Початок блоку обробки виняткових ситуацій
{
label3->Text="Перевірка неможлива. Некоректні дані";
} //Кінець блоку обробки виняткових ситуацій
}
Зверніть увагу, що порядок перевірки правильності введених даних у програмі не описаний. Натомість, ми ніби запропонували комп’ютеру: «Спробуй (try
) виконати ці команди, а якщо щось виконати неможливо, то перейди до команд з блоку catch
». Тут використано найпростіший зі способів обробки виняткових ситуацій: незалежно від того, яка помилка трапилась, реакція комп’ютера буде однаковою - виведеться текст «Перевірка неможлива. Некоректні дані».
Таким чином, механізм обробки виняткових ситуацій значно підвищує ефективність роботи програміста.
Завдання для вдосконалення проекту
- Доповніть проект, щоб при клацанні на написові з результатом перевірки текстові поля очищались, а напис змінювався на зірочки («***»).
- Доповніть програму для перевірки, чи можна просунути цеглину з розмірами К, М, Р у отвір в стіні з розмірами А і В.
Интернет реклама