Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание калькулятора


Danuve ©   (2009-10-26 07:39:00) 

Я создаю калькулятор. Но при делении мне нужно указать, что на ноль делить нельзя... Я написал такой код, а он пишет, что у меня допущена ошибка:
procedure TForm1.Button2Click(Sender: TObject);
Var b1, b2, b3:real;
begin
 b1:=StrToInt(a1.text);
 b2:=StrToInt(a2.text);
 b3:=b1/b2;
 a3.Text:=floatToStr(b3)
 if b2=0 then a3.Text='На 0 делить нельзя!';

end;
Что неправильно?


brother   (2009-10-28 04:12:00) [1]

> [0] Danuve   (26.10.09 07:39)

был тут в)


ПостОвый терминатор   (2009-10-27 17:32:00) [2]

Коллеги, прошу извинить за назойливость:)
Где (и когда) Вы в последний раз видели Danuve ?


oldman   (2009-10-27 17:20:00) [3]


> Anatoly Podgoretsky ©   (27.10.09 16:41) [16]
> > oldman  (27.10.2009 16:26:15)  [15]
>
> Ну ты и гад, а ведь парень будет мучаться.


Зто нормально. Это скоро пройдет.
Ему недолго осталось. В смысле мучаться.
Идея понятна. Код напишет сам.


Anatoly Podgoretsky   (2009-10-27 16:41:00) [4]

> oldman  (27.10.2009 16:26:15)  [15]

Ну ты и гад, а ведь парень будет мучаться.
А у тебя проверяется все, вколючая деление на слова.
...
В результате деления получим или число, или +-INF, или NAN


oldman   (2009-10-27 16:26:00) [5]


> Anatoly Podgoretsky ©   (27.10.09 16:22) [14]


Код нерабочий специально. :)
А в [0] тоже проверяется только деление на 0.
На 0 делить можно и нужно - согласен.
А что получим? 0 или бесконечность? Или таки константу?


Anatoly Podgoretsky   (2009-10-27 16:22:00) [6]

> oldman  (27.10.2009 16:16:13)  [13]

Если не обращать внимание на не рабочий код, то сразу в глаза бросается, что вне зависимости от ошибки, почему то апприори считается, что это ошибка деления на 0.
Кроме того на 0 делить можно и нужно.


oldman   (2009-10-27 16:16:00) [7]

В решении лабы много лишних букв


procedure TForm1.Button2Click(Sender: TObject);
begin
try
 a3.Text:=FloatToStr(StrToInt(a1.Text)/StrToInt(a2.Text))
except
 a3.Text='На 0 делить нельзя!';
finally
end;


:)))

ЗЫ: Функции перевода число-текст-число оставил авторские


Virgo_Style   (2009-10-27 15:12:00) [8]

Это просто подстрочный перевод задания  :0)

...
разделить первое число на второе и вывести результат в TEdit;
если делитель равен нулю, вывести сообщение "на ноль делить нельзя".
...


Дмитрий Белькевич   (2009-10-27 12:09:00) [9]

Человек, вероятно, не понимает, что процедура выполняется последовательно, сверху вниз, а предполагает, что она работает 'параллельно' вся сразу... Хотя отладчиком мог бы пробежаться - посмотреть.

Еще одна очевидная недоработка - не следует использовать StrToInt, лучше TryStrToInt или StrToIntDef. Предвидя последующие вопросы :) Еще лучше, в плане юзабилити, разрешать юзеру вводить только числа и разделитель десятичной дроби.

Но это уже сильно потом... Хотя бы с последовательностью выполнения разобраться...


Jeer   (2009-10-26 18:30:00) [10]


>
> С нулем и со степенями двойки можно.
>


с константами, заданными явно или через "переменные" -  можно.


Юрий Зотов   (2009-10-26 13:00:00) [11]

> Franzy   (26.10.09 12:21) [8]

С нулем и со степенями двойки можно.


Franzy   (2009-10-26 12:21:00) [12]


> if b2=0 then


Я-то думал такие вещи (про сравнение чисел с плавающей точкой) еще на первом курсе объясняют...


MonoLife   (2009-10-26 11:55:00) [13]

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


clickmaker   (2009-10-26 11:08:00) [14]

> b3:=b1/b2;
> a3.Text:=floatToStr(b3)
> if b2=0 then a3.Text='На 0 делить нельзя!';

пальцы бегут впереди мыслей )


Palladin   (2009-10-26 10:04:00) [15]

растет смена.... читать уже не умеет... и думать тоже... сначала делит, а потом проверяет... гении... двоеточия не хватает, но даже не затруднился прочитать сообщение об ошибке компилятора


_   (2009-10-26 09:32:00) [16]


> Danuve


Проверяешь делитель, а уже разделил. Как так?


AlexDan   (2009-10-26 08:01:00) [17]

b3 считается раньше предупреждения
if b2=0 then a3.Text:='На 0 делить нельзя!';
else b3:=b1/b2;


AIK   (2009-10-26 07:53:00) [18]

4: a3.Text:=floatToStr(b3) ;


AIK   (2009-10-26 07:51:00) [19]


> а он пишет, что у меня допущена ошибка:


1. Покажи что пишет
2. if b2=0 then a3.Text :='На 0 делить нельзя!';
3. Не зная элементарных вещей рано взялся за создания велосипеда


Наверх

Титульная страница Поиск, карта сайта Написать письмо