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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 15:24   #1
Sasuke-cun
 
Регистрация: 02.12.2009
Сообщений: 9
По умолчанию

У меня есть рабочий калькулятор для десятичной системы исчесления, как его переделать чтобы он работал для восмеричной и выполнял простые действия?
Листинг калькулятора 10-ой системы:
Код:
unit Fcalc1;

interface

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

type
  TForm1 = class(TForm)
    BitBtnClose: TBitBtn;
    BtnAdd: TSpeedButton;
    BtnSubtract: TSpeedButton;
    BtnMultiply: TSpeedButton;
    BtnDivide: TSpeedButton;
    BtnMod: TSpeedButton;
    BtnDiv: TSpeedButton;
    BtnClear: TSpeedButton;
    LabelOperator: TLabel;
    LabelResult: TLabel;
    Bevel1: TBevel;
    EditOperand1: TEdit;
    EditOperand2: TEdit;
    EditResult: TEdit;
    BitBtn1: TBitBtn;
    procedure BtnAddClick(Sender: TObject);
    procedure BtnSubtractClick(Sender: TObject);
    procedure BtnMultiplyClick(Sender: TObject);
    procedure BtnModClick(Sender: TObject);
    procedure BtnClearClick(Sender: TObject);
    procedure BtnDivideClick(Sender: TObject);
    procedure BtnDivClick(Sender: TObject);
    procedure EditOperand1Change(Sender: TObject);

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnAddClick(Sender: TObject);
var
Op1,                       // объявление временных переменных для преобразований
Op2,                       // между числовыми и строковыми представлениями
Result:Integer;
ResultStr:String;
begin
Op1:=StrToInt(EditOperand1.Text); // преобразование строкового значения 1 (2)
Op2:=StrToInt(EditOperand2.Text); // операнда в числовое и сохранение в Op1(Op2)
Result:=Op1+Op2;             //фактическое вычисление суммы
ResultStr:=IntToStr(Result);  //преобразование обратно в строковое представление
Editresult.Text:=ResultStr;  //заставляет окно редактирования Result отображать
                  //строковое представление суммы 2 операндов,присваивая ResultStr
LabelOperator.Caption:=BtnAdd.Caption; //чтобы появлялась метка "+"
LabelResult.Caption:='='
end;

procedure TForm1.BtnSubtractClick(Sender: TObject); //Процедура вычитания
begin
EditResult.Text:=
IntToStr(StrToInt(EditOperand1.Text)-
StrToInt(EditOperand2.Text));
LabelOperator.Caption:=BtnSubtract.Caption; //метка -
LabelResult.Caption:='='
end;

procedure TForm1.BtnMultiplyClick(Sender: TObject);  // Процедура умножения
begin
EditResult.Text:=
IntToStr(StrToInt(EditOperand1.Text)*
StrToInt(EditOperand2.Text));
LabelOperator.Caption:=BtnMultiply.Caption;   //метка =
LabelResult.Caption:='='
end;

procedure TForm1.BtnDivideClick(Sender: TObject);  //процедура деления
begin
 EditResult.Text:=FloatToStr(StrToInt(EditOperand1.Text)/
 StrToInt(EditOperand2.Text));
 LabelOperator.Caption:=BtnDivide.Caption; //метка /
 LabelResult.Caption:='='
end;

procedure TForm1.BtnModClick(Sender: TObject); // Остаток от деления
begin
EditResult.Text:=
IntToStr(StrToInt(EditOperand1.Text) mod
StrToInt(EditOperand2.Text));
LabelOperator.Caption:=BtnMod.Caption; //метка mod
 LabelResult.Caption:='='
end;

procedure TForm1.BtnClearClick(Sender: TObject);
begin
EditOperand1.Text:='';    //очищает окна редактирования операндов и результата
EditOperand2.Text:='';
EditResult.Text:='';
LabelOperator.Caption:='?';
LabelResult.Caption:='?';
end;

procedure TForm1.BtnDivClick(Sender: TObject); //Целая часть числа при делении
begin
EditResult.Text:=IntTostr(StrToInt(EditOperand1.Text) div
StrToInt(EditOperand2.Text));
LabelOperator.Caption:=BtnDiv.Caption; //метка div
LabelResult.Caption:='='
end;

procedure TForm1.EditOperand1Change(Sender: TObject);
begin
EditResult.Text:='';
LabelOperator.Caption:='?';
labelResult.Caption:='?';
end;
end.
Прочтите в правилах раздела, как нужно оформлять код.
И про то, что такое флуд, тоже прочтите.

15:25


Конечно не будет наверно работать выделение целой части и остатка после деления....Хотябы подскажите и намекните)

Последний раз редактировалось mihali4; 02.12.2009 в 15:42.
Sasuke-cun вне форума Ответить с цитированием
Старый 02.12.2009, 15:42   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Да пусть все так и растет, добавь еще две функции - перевод с десятичной в восьмеричную и перевод с восьмеричной в десятичную системы. Ну дальше думаю понял - тебе нужно будет ввод переводить в десятичную, подсчитывать и перед выводом преобразовывать в восьмеричную. Самый легкий способ.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 15:58   #3
Sasuke-cun
 
Регистрация: 02.12.2009
Сообщений: 9
По умолчанию

НЕ а если нужно чтобы вводимые значения были тоже в восмеричной системе енто можно как то сделать??
Sasuke-cun вне форума Ответить с цитированием
Старый 02.12.2009, 16:00   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Sasuke-cun Посмотреть сообщение
НЕ а если нужно чтобы вводимые значения были тоже в восмеричной системе енто можно как то сделать??
Сам отслеживай, строго говоря в твоем калькуляторе тоже нет отслеживания ввода цифр (может только свойства TEdit'ов выставлены, но об этом история умалчивает).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.12.2009, 16:01   #5
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

2Sasuke-cun вы внимательнее ответы читайте
Цитата:
а если нужно чтобы вводимые значения были тоже в восмеричной системе
Цитата:
тебе нужно будет ввод переводить в десятичную, подсчитывать и перед выводом преобразовывать в восьмеричную.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
арифметический калькулятор для 2х чисел purpura Помощь студентам 3 21.11.2009 15:00
Калькулятор дат для коммуникатора oleg_sh Microsoft Office Excel 1 30.10.2009 14:48
Создание поисковой системы для программистов tarpedo Свободное общение 21 16.07.2009 16:22
Sitemap редактор для системы Google Виталий Серов Софт 0 30.03.2009 00:51