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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2008, 22:53   #1
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию Пишу калькулятор

Нужна помощь! Задали написать калькулятор. Не могу сообразить, что делать дальше... вот код
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Pole: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button0: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    ButtonRavno: TButton;
    ClearButton: TButton;
    procedure ClearButtonClick(Sender: TObject);
    procedure Button0Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure ButtonRavnoClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 a:real; b:char;
implementation

{$R *.dfm}

procedure TForm1.ClearButtonClick(Sender: TObject);
begin
Pole.Clear;
end;

procedure TForm1.Button0Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='0' else  Pole.Text:=Pole.Text+'0';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='1' else  Pole.Text:=Pole.Text+'1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Pole.Text='0' then Pole.Text:='2' else  Pole.Text:=Pole.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='3' else  Pole.Text:=Pole.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='4' else  Pole.Text:=Pole.Text+'4';
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='5' else  Pole.Text:=Pole.Text+'5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='6' else  Pole.Text:=Pole.Text+'6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='7' else  Pole.Text:=Pole.Text+'7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='8' else  Pole.Text:=Pole.Text+'8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
if Pole.Text='0' then Pole.Text:='9' else  Pole.Text:=Pole.Text+'9';
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
a:=StrToFloat(Pole.Text); Pole.Text:='';  b:='+';
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
a:=StrToFloat(Pole.Text); Pole.Text:='';  b:='-';
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
  a:=StrToFloat(Pole.Text); Pole.Text:='';  b:='*';
end;

procedure TForm1.ButtonRavnoClick(Sender: TObject);
 var c:real;
begin
  case b of '+': c:=a+StrToFloat(Pole.Text);
end;

end.
добавлю! калькулятор простенький! не инженерный, без М М+ M- и всяких sin, и прочего нет. Только сложение, отнимание, умножение и деление 2 кнопик Div, Mod.
------------------------------
Ум без разума –это беда!

Последний раз редактировалось veter_s_morya; 02.12.2008 в 23:03.
veter_s_morya вне форума Ответить с цитированием
Старый 02.12.2008, 23:06   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

исходников калькуляторов полно
http://www.google.com/search?client=...utf-8&oe=utf-8
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 02.12.2008, 23:20   #3
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Что я могу сказать...Мозг снесен!
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 03.12.2008, 18:40   #4
PROFI_I
 
Регистрация: 03.12.2008
Сообщений: 8
По умолчанию

Зачем так сложно? можно создать 2 Edit'a для ввода, и один для вывода,
сделать нсколько Radiobutton'ов для операций, и две кнопки: очистить, вычислить... я думаю так проще
PROFI_I вне форума Ответить с цитированием
Старый 06.12.2008, 16:26   #5
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
ачем так сложно? можно создать 2 Edit'a для ввода, и один для вывода
По заданию было так.
Тут бы кто, исходя из моего кода, помог...посоветовал...
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 07.12.2008, 00:49   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

..........

Последний раз редактировалось vovk; 07.12.2008 в 16:53.
vovk вне форума Ответить с цитированием
Старый 07.12.2008, 13:37   #7
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Цитата:
Вы бы свои батоны по функциональности перименовали
Они вроде и так переименованы... В конце батона его название ButtonRavnoClick(слово Ravno).
Модернизировал свой код! Но не знаю как исправить ошибку, Моd и Div(это в кейсе) Ошибка типо в типе.
новый код
Код:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Pole: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button0: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    ButtonRavno: TButton;
    ClearButton: TButton;
    procedure ClearButtonClick(Sender: TObject);
    procedure Button0Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure ButtonRavnoClick(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 a, box:real; b:char;
implementation

{$R *.dfm}

procedure TForm1.ClearButtonClick(Sender: TObject);
begin
Pole.Clear;
end;

procedure TForm1.Button0Click(Sender: TObject);
begin
 if Pole.Text='0' then Pole.Text:='0' else  Pole.Text:=Pole.Text+'0';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Pole.Text='0' then
        begin Pole.Clear; Pole.Text:='1'end
 else begin Pole.Clear; Pole.Text:=Pole.Text+'1'; end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Pole.Text='0' then
        begin Pole.Clear; Pole.Text:='2'end
 else  Pole.Text:=Pole.Text+'2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if Pole.Text='0' then
 begin Pole.Clear; Pole.Text:='3'end
 else  Pole.Text:=Pole.Text+'3';
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
 if Pole.Text='0' then
 begin Pole.Clear; Pole.Text:='4'end
  else  Pole.Text:=Pole.Text+'4'; end;


procedure TForm1.Button5Click(Sender: TObject);
begin
 if Pole.Text='0' then
 begin Pole.Clear; Pole.Text:='5'end
  else  Pole.Text:=Pole.Text+'5'; end;

procedure TForm1.Button6Click(Sender: TObject);
begin
 if Pole.Text='0' then
 begin Pole.Clear; Pole.Text:='6'end
  else  Pole.Text:=Pole.Text+'6'; end;


procedure TForm1.Button7Click(Sender: TObject);
begin
 if Pole.Text='0' then
  begin Pole.Clear; Pole.Text:='7'end
   else  Pole.Text:=Pole.Text+'7'; end;


procedure TForm1.Button8Click(Sender: TObject);
begin
 if Pole.Text='0' then
  begin Pole.Clear; Pole.Text:='8'end
   else  Pole.Text:=Pole.Text+'8';end;


procedure TForm1.Button9Click(Sender: TObject);
begin
if Pole.Text='0' then
  begin Pole.Clear; Pole.Text:='9'end
   else  Pole.Text:=Pole.Text+'9';end;

procedure TForm1.Button11Click(Sender: TObject);
begin
a:=StrToFloat(Pole.Text); Pole.Text:='+';  b:='+';
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
a:=StrToFloat(Pole.Text); Pole.Text:='-';  b:='-';
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
  a:=StrToFloat(Pole.Text); Pole.Text:='*';  b:='*';
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
  a:=StrToFloat(Pole.Text); Pole.Text:='M';  b:='/';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
  a:=StrToFloat(Pole.Text); Pole.Text:='D';  b:='ost';
end;

procedure TForm1.ButtonRavnoClick(Sender: TObject);
 var c:real;
begin
  case b of '+':begin c:=a+StrToFloat(Pole.Text);end;
            '-':begin c:=a-StrToFloat(Pole.Text);end;
            '*':begin c:=a*StrToFloat(Pole.Text);end;
            '/':begin c:=a Mod StrToFloat(Pole.Text);end;
            'ost':begin c:=a Div ToFloat(Pole.Text);end;
end;
Pole.Text:=FloatToStr(c);
end;



end.
------------------------------
Ум без разума –это беда!

Последний раз редактировалось veter_s_morya; 07.12.2008 в 13:49.
veter_s_morya вне форума Ответить с цитированием
Старый 07.12.2008, 17:47   #8
veter_s_morya
ФорумчанинДжуниор
 
Аватар для veter_s_morya
 
Регистрация: 05.05.2008
Сообщений: 606
По умолчанию

Код:
 '/':begin c:=a Mod StrToFloat(Pole.Text);end;
            'ost':begin c:=a Div ToFloat(Pole.Text);end;
В этих 2х строчках он ругается на Mod и Div...
------------------------------
Ум без разума –это беда!
veter_s_morya вне форума Ответить с цитированием
Старый 07.12.2008, 18:16   #9
PROFI_I
 
Регистрация: 03.12.2008
Сообщений: 8
По умолчанию

так у тебя же a типа Real, а мод и див только к целым числам!
PROFI_I вне форума Ответить с цитированием
Старый 07.12.2008, 19:12   #10
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ой ой ой, грешим. Убери все эти процедуры у кнопок от 0..9 к чёртовой матери...
Сделай сначала так:
У каждой из кнопок от 0 до 9 установи свойство tag в значение, соответствующее значению кнопки, т.е. у кнопки 0 - таг должен равняться 0, у 1 - 1 и т.д.
Потом выдели их всех (кнопки от 0..9) и помощью клавиши Shift и назначь им общую процедуру onClick и в ней напиши:

Код:
procedure digitsOnClick(sender: tObject);
begin
   if pole.text = '0' then
      pole.text := intToStr(tButton(sender).tag)
   else
      pole.text := pole.text + intToStr(tButton(sender).tag);
А вообще, я бы создал глобальную переменную, типа extended (он самый крутой для калькульта как-раз; числовые типы данных) B И в нём бы все операции хранил тек. значение и ещё одну для буфера объявил-бы .
Altera вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор Nixtone Помощь студентам 7 03.07.2008 23:17
Калькулятор =) noxer Microsoft Office Excel 1 29.04.2008 05:14
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21
Калькулятор Ivanich Помощь студентам 5 21.12.2007 14:48
Калькулятор Maycal Общие вопросы C/C++ 2 18.11.2007 06:02