Веб программирование

Создаем простой калькулятор

 
 

Все привет.  В этой статье мы создадим калькулятор в среде 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; // Переменная для числа a
float b; // Переменная для числа 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; // Переменная для числа a
float b; // Переменная для числа 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; // Переменная для числа a
float b; // Переменная для числа 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; // Переменная для числа a
float b; // Переменная для числа 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


Есть вопросы? Спроси на нашем форуме!!
KILLO [04.12.2011 11:30]

Я сменил CMS на своем сайте xorez.16mb.com. Пожалуйста зарегистрируйтесь заново.
Приношу свои извинения =)

Proxor [28.12.2011 16:38]

Жаль что автор сдулся, учебник не плохо начал

Rost [28.04.2012 05:59]

смотри, сюда бы всунуть окошко, что на ноль не делится, а то он ошибку выдает и компилятор зависает.))) Ну а вдруг кто нибудь решит попробовать.

алексей [28.04.2012 14:37]

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

Кароль [27.05.2012 14:41]

закиньте кто нибудь сам калькулятор сюда а то прога на компе не прет плиз

Razor64 [01.06.2012 19:40]

А будут ли ещё уроки по C++, кроме этих трёх?

Padre [02.06.2012 15:45]

Если будешь писать, то точно будут )

Антонио [06.06.2012 23:52]

Автор продолжай! Очень понятно и интересно!

Антонио [07.06.2012 12:57]

Автор продолжай! Очень понятно и интересно!

Антонио [08.06.2012 13:34]

Автор продолжай! Очень понятно и интересно!

Сергей [19.07.2012 10:19]

Автор, мы требуем продолжение уроков!!!

Тима [29.07.2012 13:06]

алексей [28.04.2012 14:37] Покажи твой калк. Хочу написать чтобы прайс цену считал с двумя переменными на 40 позиций константы.

cegrarletrelp [22.08.2012 17:40]

Hi, I'm 15. I have 5" (i think you understand). Should i <a href=http://yheysv.buyonlineregular.com/?p=bvbbook.ru>buy viagra</a> - <a href=http://rmdjgs.buyonlineregular.com/?p=avbbook.ru >buy viagra</a> , http://yugoth.buyonlineregular.com/?p=svbbook.ru buy viagra to make it longer?

Иван [23.10.2012 14:58]

не работает!

Павел [08.01.2013 17:15]

10 минут и он работает) спасибо!

rodiontil [17.03.2013 16:25]

а логический калькулятор, кто-то может помочь сделать?

IgorBel [05.09.2014 11:01]

Ребята если вы выкладываете листинг проги, вы пожалуйста указывайте среду - версию - и какие операторы компилятора нужны, а не только операторы языка.

Stertor370 [06.09.2014 14:20]

А что будет с прогой, если юзер ввел не цифры, - автор не подумал? TryStrToInt для кого?

OOOOO [11.12.2014 07:37]

Если человек пишет программы на с++ визуал студио 2010 скаченного с сайта майкросовт и выкладывает их на своем сайте но он его не покупал это является наущением закона? И обращают ли на это внимание?

Stertor370 [11.12.2014 13:14]

Нарушение закона - продажа программ, написанных на нелицензионном компиляторе, с целью получения выгоды. А для образовательных целей можешь юзать смело. Так поступают тысячи человек во всем мире.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.