Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2007, 08:45   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос Помогите создать калькулятор!

я начал создавать калькулятор. прописывал одну кнопку и мне выдает ошибку на строку. посмотрите:

Код:
  b:=StrToFloat(Edit1.Text);
  if d=1 then
  begin
   c:=a+b;
   Edit1.Text:=FloatToStr(c);
  end
  else
  if d=2 then
  begin
   c:=a-b;
   Edit1.Text:=FloatToStr(c);
  end
  else
  if d=3 then
   c:=a*b;
   Edit1.Text:=FloatToStr(c);
   end
   else    //ошибка здесь.
  if (d=4) and (b0) then
  begin
   c:=a/b;
   Edit1.Text:=FloatToStr(c);
end;
end;
подскажите что здесь не правельно в этой строке?

Последний раз редактировалось Alar; 09.10.2007 в 20:34. Причина: исправление грамматических ошибок
kuzmich вне форума Ответить с цитированием
Старый 27.05.2007, 08:48   #2
juden
Пользователь
 
Аватар для juden
 
Регистрация: 28.03.2007
Сообщений: 67
По умолчанию

Код:
f d=3 then
begin
   c:=a*b;
   Edit1.Text:=FloatToStr(c);
   end;
ты просто забал begin открыть после then, вот у else и показывается ошибка
Проблема не в том могут ли машины думать, а в том - делают ли это люди?
B. F. Skinner

Последний раз редактировалось Alar; 09.10.2007 в 20:34. Причина: исправление грамматических ошибок
juden вне форума Ответить с цитированием
Старый 27.05.2007, 08:56   #3
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

он все равно показывает на эту строку.
Код:
else //ошибка здесь.
if (d=4) and (b0) then
begin
c:=a/b;
Edit1.Text:=FloatToStr(c);
end;
end;
kuzmich вне форума Ответить с цитированием
Старый 27.05.2007, 10:24   #4
juden
Пользователь
 
Аватар для juden
 
Регистрация: 28.03.2007
Сообщений: 67
По умолчанию

ну тогда попробуй сделать через case, будет выглядеть примерно вот так:
b:=StrToFloat(Edit1.Text);
case d of
1: c:=a+b;
2: c:=a-b;
3: c:=a*b;
4: c:=a/b;
end;
Edit1.Text:=FloatToStr(c);
Проблема не в том могут ли машины думать, а в том - делают ли это люди?
B. F. Skinner
juden вне форума Ответить с цитированием
Старый 27.05.2007, 12:42   #5
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Счастье

Цитата:
Сообщение от juden Посмотреть сообщение
ну тогда попробуй сделать через case, будет выглядеть примерно вот так:
b:=StrToFloat(Edit1.Text);
case d of
1: c:=a+b;
2: c:=a-b;
3: c:=a*b;
4: c:=a/b;
end;
Edit1.Text:=FloatToStr(c);
что то не работает.....
kuzmich вне форума Ответить с цитированием
Старый 27.05.2007, 12:53   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от kuzmich Посмотреть сообщение
что то не работает.....
компилица? если нет, то что пишет?
pu4koff вне форума Ответить с цитированием
Старый 27.05.2007, 16:41   #7
juden
Пользователь
 
Аватар для juden
 
Регистрация: 28.03.2007
Сообщений: 67
По умолчанию

напиши подробнее что именно не работает
Проблема не в том могут ли машины думать, а в том - делают ли это люди?
B. F. Skinner
juden вне форума Ответить с цитированием
Старый 28.05.2007, 01:04   #8
PChEL@
Пользователь
 
Аватар для PChEL@
 
Регистрация: 14.05.2007
Сообщений: 10
По умолчанию

А что такое b0? может b=0.
и последний end убери.

Последний раз редактировалось Alar; 28.05.2007 в 01:31. Причина: исправление грамматических ошибок
PChEL@ вне форума Ответить с цитированием
Старый 28.05.2007, 20:06   #9
Mickle
Пользователь
 
Регистрация: 27.03.2007
Сообщений: 37
По умолчанию

Вот тебе готовый код пользуйся на здоровье разберись только с ним чтоб в голове осталось
Код:
public
  op1:Double;
  result:Double;
   per:Real;
    { Public declarations }
  end;
var
  Form1: TForm1;
  zif,znaki,flag2:Boolean;
  operand:char;
implementation
uses Unit2;
{$R *.dfm}
вот этот код по нажатию цифры остальные цифры аналогично
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
procedure TForm1.Button1Click(Sender: TObject);
begin
 if zif then
 begin
 ed.Text:=button1.Caption;
 zif:=false;
 end
  else
   begin
   ed.Text:=ed.Text+button1.Caption;
   end;
 end;
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
procedure TForm1.FormCreate(Sender: TObject);
begin
  zif:=true;
  znaki:=true;
  flag2:=true;
  ed.Clear;
  ed.Text:='0';
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
  if znaki then
  begin
  ed.Text:=ed.Text+',';
  znaki:=false;
  end;
end;
procedure TForm1.Button10Click(Sender: TObject);
var
  st:string;
begin
 st:=ed.Text;
 if st[1]<>'-' then
  insert('-',st,0)
 else
   delete(st,1,1);
    ed.Text:=st;
end;
procedure TForm1.PlusClick(Sender: TObject);
begin
operand:='+';
 znaki:=true;
  if flag2 then
  begin
  op1:=strtofloat(ed.Text);
  flag2:=false
  end
   else
   begin
   if not zif then op1:=op1+strtofloat(ed.Text);
   ed.Text:=floattostr(op1);
   end;
    zif:=true;
end;
procedure TForm1.MinusClick(Sender: TObject);
begin
operand:='-';
 znaki:=true;
  if flag2 then
  begin
  op1:=strtofloat(ed.Text);
  flag2:=false
  end
   else
   begin
   if not zif then op1:=op1-strtofloat(ed.Text);
   ed.Text:=floattostr(op1);
   end;
    zif:=true;
end;
procedure TForm1.DelClick(Sender: TObject);
begin
  operand:='/';
 znaki:=true;
  if flag2 then
  begin
  op1:=strtofloat(ed.Text);
  flag2:=false
  end
   else
   begin
   if not zif then op1:=op1/strtofloat(ed.Text);
   ed.Text:=floattostr(op1);
   end;
    zif:=true;
    ed.Setfocus;
end;
procedure TForm1.UmnoClick(Sender: TObject);
begin
operand:='*';
 znaki:=true;
  if flag2 then
  begin
  op1:=strtofloat(ed.Text);
  flag2:=false
  end
   else
   begin
   if not zif then op1:=op1*strtofloat(ed.Text);
   ed.Text:=floattostr(op1);
   end;
    zif:=true;
    ed.Setfocus;
end;
procedure TForm1.ravClick(Sender: TObject);
begin
   case operand of
 '/' : if strtofloat(ed.Text)<>0 then op1:=op1/strtofloat(ed.Text);
 '*' : op1:=op1*strtofloat(ed.Text);
 '+' : op1:=op1+strtofloat(ed.Text);
 '-' : op1:=op1-strtofloat(ed.Text);
 '%' : op1:=op1/100*strtofloat(ed.Text);
 '^' : op1:=exp(ln(op1)*strtofloat(ed.Text));
 end;
  if strtofloat (ed.Text)<>0 then
  ed.Text:=floattostr(op1)
  else
     ed.Text:='ошибка!';
     znaki:=true;
     ed.Setfocus;
end;
procedure TForm1.N3Click(Sender: TObject);
var
  st:string;
begin
 st:=ed.Text;
  insert('-',st,0) ;
   delete(st,1,1);
    ed.Text:=st;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#44,#8,#43,#45]) then
    key:=#0;
    MessageBeep ($FFFFFFFF ) ;
   case UpCase(key) of
      '+' : Plus.Click;
      '=' : rav.Click;
   end;
end;
procedure TForm1.Button26Click(Sender: TObject);
begin
 op1:=strtofloat(ed.Text);
 op1:=exp(op1);
  ed.Text:=floattostr(op1);
   zif:=true;
      ed.Setfocus;
end;
procedure TForm1.Button29Click(Sender: TObject);
begin
  op1:=1/strtofloat(ed.Text);
  ed.Text:=floatTostr(op1);
  ed.Setfocus;
end;
procedure TForm1.Button27Click(Sender: TObject);
begin
  op1:=ln(strtofloat(ed.Text));
  ed.Text:=floatTostr(op1);
  ed.Setfocus;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   case key of
   VK_Return : rav.Click;
   VK_BACK   : Back.Click;
   VK_ESCAPE : Clear.Click;
end;
end;
procedure TForm1.Button28Click(Sender: TObject);
var
  f:real;
begin
   op1:=strtofloat(ed.text);
   if op1<>0 then
   begin
     f:=log10(op1);
     ed.text:=floatToStr(f);
   end
  else
  ed.text:='Ошибка';
  ed.SetFocus;
end;
Mickle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите создать Б.Д. Азамат Microsoft Office Access 3 15.07.2008 14:00
Калькулятор полиномов. Помогите исправить ошибку fen99 Общие вопросы C/C++ 1 20.06.2008 16:17
Помогите доделать Калькулятор Ivanich Помощь студентам 12 18.12.2007 06:26
Плиз помогите калькулятор в Delphi написать!!!! intro Помощь студентам 2 11.12.2007 10:16
Помогите создать САР Aniona Фриланс 2 03.12.2007 04:31