Создание программы-приложения «Римские цифры», разработанная в среде визуального проектирования Delphi

Автор работы: Пользователь скрыл имя, 11 Мая 2012 в 21:28, курсовая работа

Описание

Данная курсовая работа выполнена в среде программирования Delphi. Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль.

Содержание

Введение……………………………………………………………….…………..3

1 Задание на курсовую работу……………………………………………..….....5

2 Разработка программы……...………………………………..………………....6

3 Описание данных ...………………………………………………..…………....7

4 Разбиение задачи на подзадачи (структуризация)……………………..……..8

5 Блок схемы………………………………………………………………..……..9

6 Текст программы………………………………………………………………11

Рекомендуемая литература..…………………..………………………….….….23

Работа состоит из  1 файл

Калькулятор римских.docx

— 1.01 Мб (Скачать документ)

        Button18: TButton;

        Button19: TButton;

        Button20: TButton;

        Button21: TButton;

        Button22: TButton;

        Button23: TButton;

        Button24: TButton;

        Button25: TButton;

        Button26: TButton;

        Button27: TButton;

        Button28: TButton;

        Button29: TButton;

        Button30: TButton;

        Button31: TButton;

        procedure Button1Click(Sender: TObject);

        procedure Button3Click(Sender: TObject);

        procedure Button4Click(Sender: TObject);

        procedure Button5Click(Sender: TObject);

        procedure Button14Click(Sender: TObject);

        procedure Button15Click(Sender: TObject);

        procedure Button16Click(Sender: TObject);

        procedure Button17Click(Sender: TObject);

        procedure Button18Click(Sender: TObject);

        procedure Button19Click(Sender: TObject);

        procedure Button20Click(Sender: TObject);

        procedure Button21Click(Sender: TObject);

        procedure Button23Click(Sender: TObject);

        procedure Button24Click(Sender: TObject);

        procedure Button11Click(Sender: TObject);

        procedure Button8Click(Sender: TObject);

        procedure Button9Click(Sender: TObject);

        procedure Button10Click(Sender: TObject);

        procedure Button2Click(Sender: TObject);

        procedure Button6Click(Sender: TObject);

        procedure Button7Click(Sender: TObject);

        procedure Button12Click(Sender: TObject);

        procedure Button13Click(Sender: TObject);

        procedure Button22Click(Sender: TObject);

        procedure Button25Click(Sender: TObject);

        procedure Button26Click(Sender: TObject);

        procedure Button27Click(Sender: TObject);

        procedure Button28Click(Sender: TObject);

        procedure Button29Click(Sender: TObject);

        procedure BackClick(Sender: TObject);

        procedure Button31Click(Sender: TObject);

        procedure Button30Click(Sender: TObject);

      private

        { Private declarations }

      public

        { Public declarations }

      end; 

    var

      Form1: TForm1; ch:char; n,i,t:longint; a:longint;

    implementation 

    {$R *.dfm} 

    function RomanToDec(Value: string): longint;

    var

      i, lastValue, curValue: longint; minus:integer;

    begin

      Result := 0;

      lastValue := 0; 

      minus:=0;

      if value[1]='-' then begin minus:=1; delete(value,1,1); end

      else if value[1]='+' then delete(value,1,1);

     

      for i := Length(Value) downto 1 do

      begin

        case UpCase(Value[i]) of

          'C':

            curValue := 100;

          'D':

            curValue := 500;

          'I':

            curValue := 1;

          'L':

            curValue := 50;

          'M':

            curValue := 1000;

          'V':

            curValue := 5;

          'X':

            curValue := 10;

        else

          raise Exception.CreateFmt('Invalid character: %s', [Value[i]]);

        end;

        if curValue < lastValue then

          Dec(Result, curValue)

        else

          Inc(Result, curValue);

        lastValue := curValue;

      end;

      if minus=1 then result:=result*(-1);

    end; 

    function DecToRoman(num: longint): string; {returns num in capital roman digits}

    const

      Nvals = 13;

      vals: array[1..Nvals] of word = (1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500,

        900, 1000);

      roms: array[1..Nvals] of string[2] = ('I', 'IV', 'V', 'IX', 'X', 'XL', 'L',

        'XC', 'C', 'CD', 'D', 'CM', 'M');

    var

      b: 1..Nvals;

      num_znak:string;

    begin

      result := '';

      b := Nvals; 

      num_znak:=intToStr(num);

      if num_znak[1]='-' then begin result:='-'; delete(num_znak,1,1) end

      else if num_znak[1]='+' then delete(num_znak,1,1);

      num:=StrToInt(num_znak); 

      while num > 0 do

      begin

        while vals[b] > num do

          dec(b);

        dec(num, vals[b]);

        result := result + roms[b]

      end;

    end; 
     

    procedure TForm1.Button1Click(Sender: TObject);

    begin

    Close;

    end; 

    procedure TForm1.Button3Click(Sender: TObject);

    begin

    Edit1.Clear;

    end; 

    procedure TForm1.Button4Click(Sender: TObject);

    begin

    if Edit1.text<>'' then begin

    ch:='-';

    a:=RomanToDec(Edit1.Text);

    Edit1.Clear; end

    end;

      

    procedure TForm1.Button5Click(Sender: TObject);

    begin

    if Edit1.text<>'' then begin

    case ch of

    '-': Edit1.Text:=IntToStr(a-RomanToDec(Edit1.Text));

    '+': Edit1.Text:=IntToStr(a+RomanToDec(Edit1.Text));

    '*': Edit1.Text:=IntToStr(a*RomanToDec(Edit1.Text));

    'H': Edit1.Text:=IntToStr(a div (RomanToDec(Edit1.Text)));

    'O': Edit1.Text:=IntToStr(a mod (RomanToDec(Edit1.Text)))

    end;

    edit1.Text:=DecToRoman(StrToInt(Edit1.Text)); end;

    end; 

    procedure TForm1.Button14Click(Sender: TObject);

    begin

    if Edit1.text<>'' then begin

       ch:='+';

       a:=RomanToDec(Edit1.Text);

       Edit1.Clear       end;

    end; 

    procedure TForm1.Button15Click(Sender: TObject);

    begin

    if Edit1.text<>'' then begin

       ch:='*';

       a:=RomanToDec(Edit1.Text);

       Edit1.Clear  end

    end; 

    procedure TForm1.Button16Click(Sender: TObject);

    begin

    if Edit1.text<>'' then begin

       ch:='H';

       a:=RomanToDec(Edit1.Text);

       Edit1.Clear end

    end; 

    procedure TForm1.Button17Click(Sender: TObject);

    label metka;

    var minus:string;

    begin

    if Edit1.text<>'' then begin

    minus:=Edit1.Text;

    if (minus[1]<>'-') and (minus[1]<>'+') then

    begin Edit1.Text:='-'+minus; goto metka end;

    if minus[1]='+' then begin delete(minus,1,1);

    Edit1.Text:='-'+minus; goto metka end;

    if minus[1]='-' then begin delete(minus,1,1);

    Edit1.Text:='+'+minus; goto metka end;   end;

    metka:end; 

    procedure TForm1.Button18Click(Sender: TObject);

    begin

    if (Edit2.Text<>'') and (StrToInt(edit2.Text)>0) then

    Edit2.Text:=Edit2.Text+'0';

    end; 

    procedure TForm1.Button19Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'1';

    end; 

    procedure TForm1.Button20Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'2';

    end; 

    procedure TForm1.Button21Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'3';

    end; 

    procedure TForm1.Button23Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'5';

    end; 

    procedure TForm1.Button24Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'6';

    end; 

    procedure TForm1.Button11Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'M';

    end; 

    procedure TForm1.Button8Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'L';

    end; 

    procedure TForm1.Button9Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'C';

    end; 

    procedure TForm1.Button10Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'D';

    end; 

    procedure TForm1.Button2Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'I';

    end; 

    procedure TForm1.Button6Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'V';

    end; 

    procedure TForm1.Button7Click(Sender: TObject);

    begin

    Edit1.Text:=Edit1.Text+'X';

    end; 

    procedure TForm1.Button12Click(Sender: TObject);

    begin

    if Edit1.Text<>'' then

    Edit2.Text:=IntToStr(RomanToDec(Edit1.Text))

    else

    ShowMessage('Невозможно  перевести пустоту в арабское  число');

    end; 

    procedure TForm1.Button13Click(Sender: TObject);

    begin

    if Edit2.Text<>'' then

    Edit1.Text:=DecToRoman(StrToInt(Edit2.Text))

    else

    ShowMessage('Невозможно  перевести пустоту в римское  число');

    end; 

    procedure TForm1.Button22Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'4';

    end; 

    procedure TForm1.Button25Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'7';

    end; 

    procedure TForm1.Button26Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'8';

    end; 

    procedure TForm1.Button27Click(Sender: TObject);

    begin

    Edit2.Text:=Edit2.Text+'9';

Информация о работе Создание программы-приложения «Римские цифры», разработанная в среде визуального проектирования Delphi