arabische in römische Zahlen umwandeln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • hier ein Programm in C... sollte in Delphi nicht viel anders gehen

    Quellcode

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

    Quellcode

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