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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2011, 23:15   #1
salmon172
 
Регистрация: 25.05.2011
Сообщений: 7
По умолчанию Delphi создать прогу, переводящую числа из арабского в римское

здрасьте, у меня проблема вот такая... нужно сделать прогу переводящую арабское число в римское и наоборот,
при запуске выдает ошибку [Error] Unit1.pas(65): Statement expected but 'PROCEDURE' found и указывает на процедуру Button2Click, а так перевод из римского в арабское работает... помогите пожалуйста
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 const
   r:array[1..13] of string=('I','IV','V','IX','X','XL','L','XC','C','XD','D','CM','M');
   m:array[1..13] of integer=(1,4,5,9,10,40,50,90,100,400,500,900,1000);
var
  Form1: TForm1;
  a:integer;

implementation

{$R *.dfm}

   procedure TForm1.Button1Click(Sender: TObject);
        // из римского в арабское
var a:string;
    i,k,j,s:integer;
    b:array[1..50] of integer;

begin
a:=(Edit3.text);

for i:=1 to length(a) do
    begin
      if a[i]='I'then b[i]:=1;
      if a[i]='V'then b[i]:=5;
      if a[i]='X'then b[i]:=10;
      if a[i]='L'then b[i]:=50;
      if a[i]='C'then b[i]:=100;
      if a[i]='D'then b[i]:=500;
      if a[i]='M'then b[i]:=1000;
    end;
s:=0;
for i:=1 to length(a) do
   begin
     s:=s+b[i];
     if(i>1)and(b[i-1]<b[i]) then s:=s-2*b[i-1];
   end;
edit2.text:=inttostr(S);




procedure TForm1.Button2Click(Sender: TObject);
// из арабского в римское
 var j,i,n:integer;
  k:string;
  begin
  n:=strtoint(Edit3.text);
    i:=13;
  while n>0 do
 begin
   if  m[i]<=n then
   begin
    n:=n-m[i];
    Edit2.text:=inttostr(r[i]);
    else
    i:=i-1;
	   end;
   end;

end;

end.
salmon172 вне форума Ответить с цитированием
Старый 22.12.2011, 23:18   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

" end; " после Button1Click забыл :D
Учи английский, пригодится.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 22.12.2011, 23:30   #3
salmon172
 
Регистрация: 25.05.2011
Сообщений: 7
По умолчанию

блииин, я даже не заметил,а вот сейчас еще проблема возникла
из второй процедуры на строчке Edit2.text:=inttostr(r[i]);
выдает [Error] Unit1.pas (77): Существует не перегруженная версия 'IntToStr', которую можно назвать с этими аргументами
salmon172 вне форума Ответить с цитированием
Старый 22.12.2011, 23:31   #4
salmon172
 
Регистрация: 25.05.2011
Сообщений: 7
По умолчанию

спасибо большое)) и чем там можно заменить???
salmon172 вне форума Ответить с цитированием
Старый 23.12.2011, 10:21   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Напиши просто Edit2.text:=r[i];
inttostr(r[i]) тут не прокатит, так как
Цитата:
r:array[1..13] of string=('I','IV','V','IX','X','XL', 'L','XC','C','XD','D','CM','M');
То есть это уже строки, а не целые цисла
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 23.12.2011, 10:32   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

whatever, +1

вот так работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
// из арабского в римское
var i, n: integer;
begin
  n := strtoint(Edit3.text);
  i := 13;
  Edit2.text := '';
  while n > 0 do
  begin
    if m[i] <= n then
    begin
      n := n - m[i];
      Edit2.text := Edit2.text + r[i];
    end  
    else
      i := i - 1;
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать двоичный файл, записать n целых чисел. Из файла создать массив, элементы числа-палиндромы (на C) Simak63 Помощь студентам 0 30.03.2011 21:06
Не могу создать прогу в VB P10neer Помощь студентам 1 30.03.2011 19:23
Не могу создать прогу в VB P10neer Microsoft Office Access 1 17.02.2011 07:26
Не могу создать прогу в VB P10neer Помощь студентам 0 15.02.2011 22:47
на delphi создать прогу, которая при нажатии на кнопку создавала exe X-LEV-X Фриланс 6 06.03.2010 17:13