- •Задача 1. Конвертер
- •Задача 2. Фунты-килограммы
- •Задача 3. Сила тока.
- •Задача 4. Сопротивление
- •Задача 5. Кафе
- •Задача 6. Любимый напиток
- •Задача 7. Электроэнергия
- •Задание 8. Осаго
- •Задание 9.Просмотр иллюстраций
- •Задача 10. Калькулятор
- •Задача 11. Калькулятор-2
- •Задача 12.Секундомер
- •Задача 13. Угадай число
- •Задание 14.Угадай число-2
- •Задание 15.Запуск Internet Explorer
- •Задание 16.Конвертор
- •Задание 17.Конвертор 2
- •Задание 18.Погода
- •Задание 19.Средняя температура
- •Задание 20. Простая база данных
- •Задание 21. Редактор текста
- •Задание 22. Приветствие
- •Задача 23. Олимпийский флаг
- •Задание 24. Диаграмма
- •Задача 26. Круговая диаграмма.
- •Задача 27. Просмотр иллюстраций.
- •Задача 28 .Часы
- •Задача 29. Пинг понг.
- •Задача 30. Полет в облаках
- •Задача 31.Баннер
- •Задача 32. Фоновый рисунок
- •Задача 33. Wav
- •Задача 34. Mp3 Player
- •Задача 35.Воспроизведение midi
- •Задача 36.Compact Disk Player (версия 1)
- •Задача 37.Compact Disk Player (версия 2)
- •Задача 38.VideoPlayer
- •Задача 39. Анимация
- •Задача 40. Записная книжка
- •Задача 41 Магазин
- •Задача 42. Ежедневник
- •Задача 43. Сапер
- •Часть 1. Примеры и задачи
- •Часть 1. Примеры и задачи
- •Задача 44 Игра 15
- •Часть 1. Примеры и задачи
- •Задача 45. Игра "Собери картинку" (Puzzle)
- •Задача 46 Игра "Парные картинки"
- •Задача 47. Экзаменатор
- •Задача 48. Экзаменатор-2
- •Задача 49. Календарь
- •Задача 50. Будильник
- •Задача 51. Очистка диска
- •Задача 52.Печать
- •Задачи для самостоятельного решения Задача 1. Скидка
- •Задача 2.Доход по вкладу
- •Задача 3. Таблица умножения
- •Задача 4.Поездка на автомобиле
- •Задача 5.Стоимость разговора
- •Задача 6. Стеклопакет
- •Задача7. Калькулятор
- •Задача 8. Электроэнергия
- •Задача 9. Добрый день
- •Задача 10. Часы
- •Задача 11. Узоры
- •Задача 12. Курс доллара
- •Задача 13. Диаграмма
- •Задача 14. Домашние животные
- •Задача 15. Кораблик
- •Задача 16. Сапер
- •Задача 17 .Экзаменатор
- •Задача 18. База данных "Расходы"
Задача 3. Сила тока.
Программа
Сила тока (Рис.3). демонстрирует
использование компонентов TextBox и Label, а
также обработку исключения "деление
на ноль".
Рис. 3
Вывод: При решении этой задачи мы научились исправлять необъяснимые ошибки компилятора и действовать при ограниченных ресурсах для работы с кодом.
Листинг
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
floatu;//напряжение
floatr; // сопротивление
floati; // ток
// проверим, введены ли данные в поля Напряжениеи // Сопротивлени
if ( ((Edit1->Text).Length() ==0) ||
((Edit2->Text).Length() == 0))
{
MessageDlg("Надо ввести напряжение и сопротивление",
mtInformation, TMsgDlgButtons() << mbOK, 0);
if ((Edit1->Text).Length() == 0)
Edit1->SetFocus();// курсор в поле Напряжение
else
Edit2->SetFocus();// курсор в поле Сопротивлени
return;
};
// получить данные из полей ввода
u = StrToFloat(Edit1->Text);
r = StrToFloat(Edit2->Text);
// вычислитьток
try
{
i = u/r;
}
catch (EZeroDivide &e)
{
ShowMessage("Величина сопротивления не должна быть"
"равна нулю");
Edit2->SetFocus(); // курсор в поле Сопротивление
return;
}
Label4->Caption = "Ток : " +
FloatToStrF(i,ffGeneral,7,2)+" A";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (( Key >= '0') && ( Key <= '9' ))
return;
// Глобальная переменная DecimalSeparator // содержит символ, используемый в качестве разделителя // при записи дробных чисел
if (Key == DecimalSeparator)
{
if ((Edit1->Text).Pos(DecimalSeparator) != 0)
Key = 0 ; // разделитель уже введен
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Edit2->SetFocus();
return;
}
Key = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if ((Key >= '0') && ( Key <= '9' ))
return;
if (Key == DecimalSeparator) {
if ((Edit2->Text).Pos(DecimalSeparator) != 0 ) // разделитель уже введен
Key = 0;
return;
}
if (Key == VK_BACK)
return;
if ( Key == VK_RETURN)
{
Button1->SetFocus(); // переходккнопкеВычислить // повторноенажатиеклавиши<Enter> // активизируетпроцессвычислениятока // см. ButtonlClic
return;
};
Key = 0;
}
//---------------------------------------------------------------------------
// щелчокнакнопкеЗавершит
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
/* Процедура EditlChange обрабатываетсобытиеChange какполя Editl, такиполя Edit2. Сначала-надо создать процедуру обработки событияChange для поля Editl, затем - в строке события Change компонента Edit2 щелкнуть на значке раскрывающегося списка и выбрать EditlChange. */
void __fastcallTForm1::Edit1Change(TObject *Sender)
{
Label4->Caption = "";
}
