You are not logged in.

  • Login

1

Monday, January 15th 2007, 8:44am

arabische in römische Zahlen umwandeln

Hi kann mir jemand den Quelltext geben mit dem man in Delphi 2005 unter Konsolenanwendung arabische zahlen in römische umwandeln kann. Wenn möglich bis Donnerstag. Vielen Dank

2

Monday, January 15th 2007, 11:32am

hier gibts Basic-Source Code - sollte als Ausgangspunkt reichen....

3

Monday, January 15th 2007, 12:25pm

Viel Spass dabei - liest flüssig wie ein Fremdwörterlexikon... ;)

Also ich würde es so machen: Ich leg mir als erstes eine Tabelle mit den röm. Buchstaben und ihren Zahlenwerten an. Dann gehe ich mit einer Schleife den String rückwärts! durch und gucke mir das Zeichen an. Ich nehm den Wert aus der Tabelle für das Zeichen und wenn der größer ist, als der vom Zeichen davor addiere ich die Zahl aus der Tabelle zum Ergebnis andernfalls ziehe ich den ab.

Habs noch nie gemacht, aber wenn ich die römischen Zahlen richtig erinnere sollte das so klappen. Austesten kannst du das hier. Da das Javascript ist, kannst du dir sonst den Code angucken, der sollte sich etwas flüssiger lesen als der Basic Kram.

4

Monday, January 15th 2007, 1:44pm

Ich habs für eine Graphische Anwendung schon gemacht. mal sehn ob ich die funktion finde

5

Monday, January 15th 2007, 2:21pm

hier ein Programm in C... sollte in Delphi nicht viel anders gehen

C Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
  char ziffern[13][3] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X",
		       "IX", "V", "IV", "I"};
  int zahlen[13] = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
  int zahl, i=0;
 
  /*scanf("%d", &zahl);*/
  zahl = atoi(argv[1]);
  while (zahl > 0) {
    if (zahl/zahlen[i] >= 1) {
      printf(ziffern[i]);
      zahl -= zahlen[i];
    }
    else {
      i++;
    }
  }
  printf("\n");
  return 0;
}

6

Monday, January 15th 2007, 4:08pm

OK mal was in Delphi, nicht so elegant wie das von d0nUt aber funktioniert.

Ist für Win32 geschrieben musst halt in eine Konsolenanwendung umbauen

Delphi Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
procedure TForm1.toRoem(value: Integer);
begin
  Edit_Roem.Text := '';
  while value >= 1000 do
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'M';
    value := value - 1000;
  end;
  if value >= 900 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'CM';
    value := value - 900;
  end
  else if value >= 500 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'D';
    value := value - 500;
  end
  else if value >= 400 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'CD';
    value := value - 400;
  end;
  while value >= 100 do
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'C';
    value := value - 100;
  end;
  if value >= 90 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'XC';
    value := value - 90;
  end
  else if value >= 50 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'L';
    value := value - 50;
  end
  else if value >= 40 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'XL';
    value := value - 40;
  end;
  while value >= 10 do
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'X';
    value := value - 10;
  end;
  if value >= 9 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'IX';
    value := value - 9;
  end
  else if value >= 5 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'V';
    value := value - 5;
  end
  else if value >= 4 then
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'IV';
    value := value - 4;
  end;
  while value >= 1 do
  begin
    Edit_Roem.Text := Edit_Roem.Text + 'I';
    value := value - 1;
  end;
end;

7

Monday, March 5th 2007, 8:18am

danke sehr

Social bookmarks