Создаем простой калькулятор Все привет. В этой статье мы создадим калькулятор в среде Borland C++ Builder. Откроем ее и сделаем форму как у меня: Обозначение компонентов: Edit1 - Число 1 Edit2 - Число 2 Edit3 - Ответ Button (1-4) - + - / соответственно Напишем код для формы, для этого щелкним на ней два раза, автоматически будет создана следующаяя процедура: void __fastcall TForm1::FormCreate(TObject *Sender)
{
}
TForm1 - указывает на имя компонента FormCreate - указывает в случае чего код между фигурных скобок выполнится. В данном случае код выполнится в момент создания формы. Напишем в нем следующую команду: Form1->BorderStyle=bsToolWindow;
В результыте ее выполнения стиль формы будет следующим: Теперь ее нельзя растянуть. Идем дальше, код для кнопки +: void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (Edit1->Text=="" && Edit2->Text=="")
{
ShowMessage ("Числа не введены!");
}
else
{
float a;
float b;
float result;
a=StrToFloat (Edit1->Text);
b=StrToFloat (Edit2->Text);
result=a+b;
Edit3->Text=FloatToStr (result);
}
}
Теперь разберем код. 1. Мы проверяем ввел ли числа пользователь, для этого используем оператор && (логическое И) вот его схема: правда && правда = правда ложь && правда = ложь ложь && ложь = ложь Помимо && в C++ есть следующие операторы: || - логическое ИЛИ != - логическо НЕ (не равно) == - равно (не путайте с оператором присваивания =, оператор равно мы используем когда хотим что-то сравнить, а оператор = мы используем когда хотим присовить чему-то значение). Для проверки условия используется конструкция IF. Вот ее вид: if (условие) { действия если правда; } else { действия если ложь; } тоесть строчку if (Edit1->Text=="" && Edit2->Text=="") можно дословно перевести так: Если текст в эдите 1 РАВЕН пустоте И текст в эдите 2 РАВЕН пустоте,то выводим сообщение. Команда ShowMessage выводит простое виндосовское сообщение с заданным текстом. Ее вид: ShowMessage (текст сообщения). Все на вводимость проверили, теперь надо написать код для сложения. Т.е если пользователь ввел числа, то надо их сложить. Т.е условие (Edit1->Text=="" && Edit2->Text=="") поэтому код пишем во второй чатси if - else. Объявляем три переменные типа float (тип для дробных чисел). Одну для первого числа, другую для второго числа соответственно. Третья переменная нужна для результата. Далее записываем в переменные числа, поскольку числа в эдитах имеют тип string - строка, нам надо перевести их в тип Float. Для этого есть функция StrToFloat. ЕЕ вид: StrToFLoat (строка которую надо перевести в число); Переводим и записываем значения в переменные: a=StrToFloat (Edit1->Text);
b=StrToFloat (Edit2->Text);
Записали! Теперь сложим их: result=a+b; Сложили и записали результат в переменную result. Теперь надо вывести результат в эдит 3, но число в переменной result имеет тип float, а свойтво эдита - Text может принять параметром только строку. Как же нам перевести число в строку? Для этого есть функция FloatToStr. ЕЕ вид: FloatToStr (число типа float) Переводим и записываем в эдит 3: Edit3->Text=FloatToStr (result);
Теперь осталось только написать код для кнопок *,\,-. Они аналогичны коду кнопки +. Код для кнопки / : void __fastcall TForm1::Button4Click(TObject *Sender)
{
if (Edit1->Text=="" && Edit2->Text=="")
{
ShowMessage ("Числа не введены!");
}
else
{
float a;
float b;
float result;
a=StrToFloat (Edit1->Text);
b=StrToFloat (Edit2->Text);
result=a/b;
Edit3->Text=FloatToStr (result);
}
}
Код для кнопки *: if (Edit1->Text=="" && Edit2->Text=="")
{
ShowMessage ("Числа не введены!");
}
else
{
float a;
float b;
float result;
a=StrToFloat (Edit1->Text);
b=StrToFloat (Edit2->Text);
result=a*b;
Edit3->Text=FloatToStr (result);
}
Код для кнопки -: void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (Edit1->Text=="" && Edit2->Text=="")
{
ShowMessage ("Числа не введены!");
}
else
{
float a;
float b;
float result;
a=StrToFloat (Edit1->Text);
b=StrToFloat (Edit2->Text);
result=a-b;
Edit3->Text=FloatToStr (result);
}
}
Все! Калькулятор готов! Запускаем, вводим любые числа и выбираем любое действие. Кстати я содал форум своей команды. Он доступен по адресу xorez.16mb.com/forum и еще в воскресенье пройдет первый урок по C++. Подробнее на сайте xorez.16mb.com
Урок 5 - Шаблоны функций
|