• Здраво и добредојдовте на форумот на IT.mk.

    Доколку сеуште не сте дел од најголемата заедница на ИТ професионалци и ентузијасти во Македонија, можете бесплатно да се - процесот нема да ви одземе повеќе од 2-3 минути, а за полесна регистрација овозможивме и регистрирање со Facebook и Steam.

[Pascal] Арапски во римски броеви

  • Ја почнал/а темата
  • #1

sojic

Intern
29 април 2007
435
23
Пред X време на муабет падна идеја за програма за конверзија на арапски во римски цифри, па склепав програмче на брзака.

Ќе му се најде на некој:

Код:
program rimski;
var broj, c, s, br, i, j: integer;
    t: array [1..2] of integer;
    b: array [1..2,0..3] of char;
    rc, rb: string;

begin
     rc:=''; rb:='';
     write ('Vnesi broj: ');
     readln (broj);
     b[1,0]:='I';     b[1,1]:='X';     b[1,2]:='C';     b[1,3]:='M';
     b[2,0]:='V';     b[2,1]:='L';     b[2,2]:='D';     b[2,3]:=' ';
     T[1] := 1;
     T[2] := 5;

     br:=0;
     while broj >0 do
     begin
          c:=broj mod 10;
          for J:=1 to 2 do
          begin
              if (c>5) and (c<=8) then
              begin
                 c:=c-5;
                 rc:=b[2,br];
              end;
              for I:=1 to 3 do
                  if c=t[j]*i then
                     for s:=1 to i do
                         rc:=rc+b[j,br];
          if c=t[2]-1 then
             rc:=b[1,br]+b[2,br];

          if c=t[1]*10-1 then
             rc:=b[1,br]+b[1,br+1];

          end;
          rb:=rc+rb;
          rc:='';
          broj:=broj div 10;
          br:=br+1;
     end;
     writeln ('rimskiot broj e ',rb);
end.
 

GoranBT

Баниран/a
31 јули 2007
40
0
Одлично

Класичен пример за добро направено дело во Delphi...
 

lizardlabs

Intern
23 август 2007
58
1
Еве еден подобар алгоритам (сегментот е во C#):

Код:
int[] values = new int[]
	{ 1000, 900, 500, 400, 100,90, 50, 40, 10, 9, 5, 4, 1 };
string[] numerals = new string[]
	{ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };

StringBuilder result = new StringBuilder();

for (int i = 0; i < 13; i++)
{
    while (number >= values[i])
    {
        number -= values[i];
        result.Append(numerals[i]);
    }
}

Console.WriteLine(result.ToString());
 
  • Ја почнал/а темата
  • #5

sojic

Intern
29 април 2007
435
23
Не е лош, просто едноставно. Кај тебе ги имаш дефинирано и (х)-1, а јас ги рачунам :)
 

Нови мислења

Последни Теми

Статистика

Теми
43,562
Мислења
823,366
Членови
28,067
Најнов член
Dacmac92
На врв Дно