![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание калькулятора
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. Не зная элементарных вещей рано взялся за создания велосипеда