Hackerboard WikiHaboBlog

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Römische Zahlen

Diskussion: Römische Zahlen im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Bevor ich die Java-Lösungen hier gelesen habe, hab ich selber eine gschrieben, die etwas anders aussieht... vielleicht denke ich ja ...

Antwort
Alt 16.12.07, 19:06   #31 (permalink)
 
Benutzerbild von derLichtschalter
 
Registriert seit: 28.08.07
derLichtschalter Leistung: Facit NTK
Likes: 0
Standard


Bevor ich die Java-Lösungen hier gelesen habe, hab ich selber eine gschrieben, die etwas anders aussieht...

vielleicht denke ich ja anders als die meisten Menschen ;-)

für xyz kann man eine beliebige Dezimal-Zahl eingeben

Code:
public class RömischeZahlen {
	
	public static void main(String[] args) {
		
		int Zahl = xyz;
		
		String Ausgabe = "";
		
		while ((Zahl / 5000) > 0) {
			Ausgabe = Ausgabe + "A";
			Zahl -= 5000;
		}
		while ((Zahl / 1000) > 0) {
			Ausgabe = Ausgabe + "M";
			Zahl -= 1000;
		}		
		while ((Zahl / 500) == 1 && (Zahl / 100) != 9) {
			Ausgabe = Ausgabe + "D";
			Zahl -= 500;
		}
		if ((Zahl / 100) > 0) {
			if ((Zahl / 100) == 9) {
				Ausgabe = Ausgabe + "CM";
				Zahl -= 900;
			}
			else if ((Zahl / 100) == 4) {
				Ausgabe = Ausgabe + "CD";
				Zahl -= 400;
			}
			else {
				while ((Zahl /100) > 0) {
					Ausgabe += "C";
					Zahl -= 100;
				}
			}
		}	
		while ((Zahl / 50) == 1 && (Zahl / 10) != 9) {
			Ausgabe = Ausgabe + "L";
			Zahl -= 50;
		}
		if ((Zahl / 10) > 0) {
			if ((Zahl / 10) == 9) {
				Ausgabe = Ausgabe + "XC";
				Zahl -= 90;
			}
			else if ((Zahl / 10) == 4) {
				Ausgabe = Ausgabe + "XL";
				Zahl -= 40;
			}
			else {
				while ((Zahl /10) > 0) {
					Ausgabe += "X";
					Zahl -= 10;
				}
			}
		}
		while ((Zahl / 5) == 1 && (Zahl / 1) != 9) {
			Ausgabe = Ausgabe + "V";
			Zahl -= 5;
		}
		if ((Zahl / 1) > 0) {
			if ((Zahl / 1) == 9) {
				Ausgabe = Ausgabe + "IX";
				Zahl -= 9;
			}
			else if ((Zahl / 1) == 4) {
				Ausgabe = Ausgabe + "IV";
				Zahl -= 4;
			}
			else {
				while ((Zahl /1) > 0) {
					Ausgabe += "I";
					Zahl -= 1;
				}
			}
		}
		if (Zahl == 0) {
			System.out.println(Ausgabe);	
		}
	}
}
__________________
Lenovo ThinkPad X201 | Core i7 620M 2,67 GHz, 4 GB DDR3, 128 GB Kingston SSD
Marke Eigenbau | Core 2 Duo E8400 3,0 GHz, 4 GB DDR2, XFX NVIDIA GeForce 9800 GT 670M

blog.derLichtschalter.de
derLichtschalter ist offline   Mit Zitat antworten
Alt 21.05.08, 03:30   #32 (permalink)
 
Registriert seit: 21.04.08
Ook! Leistung: Facit NTK
Likes: 0
Standard

Hallo!

Meine Java Lösung

Main.java
Code:
public class Main {

	public static void main(String[] args) {
		RoemNums roem = new RoemNums();
		
		System.out.println(roem.getRoemNum(5));
		System.out.println(roem.getRoemNum(19));
		System.out.println(roem.getRoemNum(21));
		System.out.println(roem.getRoemNum(347));
		System.out.println(roem.getRoemNum(1234));
	}

}
RoemNums.java
Code:
public class RoemNums {
	
	private RoemDigit[] roemArray = null;
	
	public RoemNums() {
		this.roemArray = new RoemDigit[15];
		this.init();
	}
	
	private void init() {
		this.roemArray[0] = new RoemDigit(5000, "A");
		this.roemArray[1] = new RoemDigit(4000, "MA");
		this.roemArray[2] = new RoemDigit(1000, "M");
		this.roemArray[3] = new RoemDigit(900, "CM");
		this.roemArray[4] = new RoemDigit(500, "D");
		this.roemArray[5] = new RoemDigit(400, "CD");
		this.roemArray[6] = new RoemDigit(100, "C");
		this.roemArray[7] = new RoemDigit(90, "XC");
		this.roemArray[8] = new RoemDigit(50, "L");
		this.roemArray[9] = new RoemDigit(40, "XL");
		this.roemArray[10] = new RoemDigit(10, "X");
		this.roemArray[11] = new RoemDigit(9, "IX");
		this.roemArray[12] = new RoemDigit(5, "V");
		this.roemArray[13] = new RoemDigit(4, "IV");
		this.roemArray[14] = new RoemDigit(1, "I");
	}
	
	public String getRoemNum(int num) {
		String roem = "";
		
		for(int idx=0; idx<roemArray.length; idx++) {
			while(num >= roemArray[idx].getNum()) {
				num -= roemArray[idx].getNum();
				roem += roemArray[idx].getDigit();
			}
		}
		return roem;
	}
	
}
RoemDigit.java
Code:
public class RoemDigit {

	private int num = 0;
	private String digit = null;
	
	public RoemDigit(int num, String digit) {
		this.num = num;
		this.digit = digit;
	}
	
	public int getNum() {
		return num;
	}
	
	public String getDigit() {
		return digit;
	}
	
}
Gruß
Felix
Ook! ist offline   Mit Zitat antworten
Alt 04.06.08, 15:27   #33 (permalink)
 
Registriert seit: 04.06.08
MB1988 Leistung: Facit NTK
Likes: 0
Standard

Ich habe da auch eine Idee, von arabisch ins römische. Wir mussten sowas für die Schule erstellen. Die gegeben Programme haben mir da auch sehr geholfen. Danke. Ihr könnt euch ja mal melden, falls es da noch Probleme gibt.
Code:
public class rom {
  public static void main(String [] args) {
    System.out.println("Herzlich Willkommen");
    System.out.println("Dieses Programm erfüllt die Umrechnung arabischer in römische Zahlen");
    int eingabe = IOTools.readInteger("Geben sie eine Zahl von 1 bis 3999 an: ");  //Eingabe der Zahl
    if (eingabe<4000 && eingabe>0)
      eingabe = eingabe;
    else
      eingabe = IOTools.readInteger("Geben sie erneut eine Zahl von 1 bis 3999 an: ");
    abfrage(eingabe,false); //Einfache Umrechnung
    abfrage(eingabe,true);  //Subtraktionsregel
  }

  public static void abfrage (int eingabe2,boolean b){
    String sub = "";          //setzt die römische Zahl auf 0
    boolean a = true;         //Einfache Umrechnung wird festgelegt
    while(a){                 //Schleife mit der Berechnung startet
      if(eingabe2 >= 1000) {
        eingabe2 = eingabe2 - 1000;
        sub = sub + 'M';
      }
      else if(eingabe2 >=900 && b){
        eingabe2 = eingabe2 - 900;
        sub = sub+"CM";
      }
      else if(eingabe2 >= 500) {
        eingabe2 = eingabe2 - 500;
        sub = sub + 'D';
      }
      else if(eingabe2 >=400 && b){
        eingabe2 = eingabe2 - 400;
        sub =sub+"CD";
      }
      else if(eingabe2 >= 100) {
        eingabe2=eingabe2 - 100;
        sub = sub + 'C';
      }
      else if(eingabe2 >=90 && b){
        eingabe2 = eingabe2 - 90;
        sub = sub+"XC";
      }
      else if(eingabe2 >= 50) {
        eingabe2=eingabe2 - 50;
        sub = sub + 'L';
      }
      else if(eingabe2 >=40 && b){
        eingabe2 = eingabe2 - 40;
        sub = sub+"XL";
      }
      else if(eingabe2 >= 10) {
        eingabe2=eingabe2 - 10;
        sub = sub + 'X';
      }
      else if(eingabe2 >=9 && b){
        eingabe2 = eingabe2 - 9;
        sub = sub+"IX";
      }
      else if(eingabe2 >= 5) {
        eingabe2=eingabe2 - 5;
        sub = sub + 'V';
      }
      else if(eingabe2 >=4 && b){
        eingabe2 = eingabe2 - 4;
        sub = sub+"IV";
      }
      else if(eingabe2 >= 1) {
        eingabe2=eingabe2 - 1;
        sub = sub + 'I';
      }
      else if(eingabe2 == 0){
        System.out.println("Die römische Zeichenkette lautet: "+sub);     //gibt die Reihenfolge der römischen Buchstaben aus
        a = false;                   //ändert es auf die Subtraktionsregel; die Schleife wird erneut durchgeführt und mit der korrekten Ausgabe der Buchstaben ausgegeben
      }
    }
  }
}
Das geht doch als Programm, oder? Also bei mir funktioniert es.

Editiert von CDW -> CODE-Tags nutzen!
MB1988 ist offline   Mit Zitat antworten
Alt 08.06.08, 22:55   #34 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 156
Standard

Umrechnung in beide Systeme,Prolog,[b   
mit[/b] Subtraktionsregel]
Code:
zahl(5000,a).
zahl(1000,m).
zahl(900,cm).
zahl(500,d).
zahl(400,cd).
zahl(100,c).
zahl(90,xc).
zahl(50,l).
zahl(40,xl).
zahl(10,x).
zahl(9,ix).
zahl(5,v).
zahl(4,iv).
zahl(1,i).
                             %für dez. 0 ist die röm. Darstellung trivial :)
rom(0,[]).
                             %sonst: sofern die Zahl positiv ist
rom(Dec,Erg):-  Dec>0,        %gibt es bestimmt eine Zahl X,
    zahl(X,Zeichen),         %der direkt eine röm. Zahl entspricht und ein Y
    Y is Dec-X,              % welches sich in eine römische Zahl  "zerlegen"
    rom(Y,Rest),             % lässt.   Daher ist Ergebnis= die Entsprechung für
    Erg=[Zeichen|Rest],!.    % X samt der Entsprechung für Y (welche noch gefunden
                             % werden muss ;) )
                             
dec([],0).                    %fertig, wenn keine röm. Ziffer vorhanden ist
dec([Rom|Restliste],Erg):-
    zahl(X,Rom),              % sonst gibt es eine Entsprechung X für eine röm. Zahl
    dec(Restliste,Teil_erg),   % und für den Rest existiert ein Teilergebnis
    Erg is Teil_erg+X.         % so dass Ergebnis sich aus X und Teilergebnis
                               %zusammensetzt.

Ausgabe:
Code:
?- rom(2008,Jahr).
Jahr = [m, m, v, i, i, i].
?- dec([m,m,m,cm,xc,ix],Jahr).
Jahr = 3999
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 21.06.08, 21:40   #35 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 156
Standard

und nochmal in der "Spielzeugsprache" Hackish (Indentation-Syntax)    

Code:
module Rom
where 
 import Hackish
 main = runHackish entry
 dez = newInt 0
 rom = newString ""

 entry = do
      repeatUntil $$ 
      do
         rom=:""
         writeLn("Zahl zum Umrechnen oder 0 zum aufhören:");
         getInt dez
         ifThen(dez==0) $$
           exit 0
         umrechnen
         writeLn(rom)
      $$(false) 
 
 umrechnen=do
     while(dez>=5000) $$ do
        dez=:dez-5000
        rom=:rom++"A"
     while(dez>=1000) $$ do
        dez=:dez-1000
        rom=:rom++"M"
     while(dez>=500) $$ do
        dez=:dez-500
        rom=:rom++"D"      
     while(dez>=100) $$ do
        dez=:dez-100
        rom=:rom++"C"
     while(dez>=50) $$ do
        dez=:dez-50
        rom=:rom++"L"
     while(dez>=10) $$ do
        dez=:dez-10
        rom=:rom++"X"
     while(dez>=5) $$ do
        dez=:dez-5
        rom=:rom++"V"
     while(dez>=1) $$ do
        dez=:dez-1
        rom=:rom++"I"

Im Anhang gibts erstmal nur CLASS Dateien (die "Sprache" wird zu Java-Bytecode compiliert)
RTS und IRTS sind "runtime system" (zum einlesen/ausgeben - sollten nur im selben Ordner wie das Hauptprogramm liegen). Den Compiler kann ich erst nach dem 7.7.08 freigeben
Laufen lassen kann man das Ganze per "java Rom"
Angehängte Dateien
Dateityp: zip compiled.zip (1,9 KB, 5x aufgerufen)
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 21.06.08, 23:31   #36 (permalink)
 
Registriert seit: 16.11.06
Virus Leistung: Facit NTK
Virus eine Nachricht über ICQ schicken
Likes: 0
Standard

Hier noch meine Lösung in C++, ich hoffe sie funktioniert wie sie soll,
also die Beispiele bei wikipedia hab ich getestet die habn funktioniert.
Ist vielleicht nicht ganz so optimal programiert, aber ich bin für Verbesserungsvorschläge offen
C++   

Code:
 
#include <cstdlib>
#include <iostream>

using namespace std;

int umrechnung ( int dezimal );

int main(void)
{
    int dezimal;
    cout << "Hallo bitte geben sie die Zahl ein " << endl;
    if (!(cin >> dezimal)) {
              cout << "Falsche Eingabe! " << endl;
              system("pause");
              return 0;
              }
    umrechnung ( dezimal );
    system("pause");
    return 0;
}

int umrechnung( int dezimal ) {
    int var1=0;
    int array1[16] = {5000, 4000, 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
    char array2[16][3] = { "A", "MA", "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };     
    for (int i=0;dezimal>0;) {
        if ( !((dezimal-array1[i])>-1) ) {
             i++;
             continue;
             }
        cout << array2[i];  
        dezimal = dezimal-array1[i];
        var1++;
        }
    cout << endl;
    return 0;
    }


Gruß Virus
Virus ist offline   Mit Zitat antworten
Alt 22.06.08, 11:55   #37 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Hier noch eine Lösung in Lisp:
lisp   

Code:
(defparameter mapping '(("I" 1)	("IV" 4) ("V" 5) ("IX" 9) ("X" 10) ("XL" 40)
			("L" 50) ("XC" 90) ("C" 100) ("CD" 400) ("D" 500)
			("CM" 900) ("M" 1000) ("MA" 4000) ("A" 5000)))

(defun get-highest-match (number)
  (find-if (lambda (x)
	     (<= x number))
	   mapping
	   :key #'second
	   :from-end t))
;decimal to roman
(defun toroem (number)
  (if (= number 0)
      ""
      (let ((match (get-highest-match number)))
	(string-concat (car match)
		       (toroem (- number (second match)))))))

(defun get-string-match (string)
  ;sort first to catch IV,IX,XL....
  (let ((sorted-mapping (sort mapping #'>
			      :key (lambda (x) (length (car x))))))
    (dolist (el sorted-mapping)
      ;check for long enough 'string' before subseq'ing
      (if (and (<= (length (car el)) (length string))
	       (string= (car el)
			(subseq string 0 (length (car el)))))
	  (return el)))))
;roman to decimal, no error checking
(defun todec (string)
  (let ((match (get-string-match string)))
    (if (string= "" string)
	0
	(+ (second match) (todec (subseq string (length (car match))))))))
Lesco ist offline   Mit Zitat antworten
Alt 23.05.09, 13:52   #38 (permalink)
 
Registriert seit: 02.10.08
Alive Leistung: Facit NTK
Likes: 0
Standard

Meine recht kurze C++-Variante: Unterstützt auch IV, IX, XL, etc
Code:
#include <iostream>
#include <string>
using namespace std;

int main(int argc, char *argv[]) {

if(argc < 2) {
	cout << "Usage: a.out <arabische Zahl>" << endl;
	return -1;
}
int zahl = atoi(argv[1]);

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

for(int i=(sizeof(rom)/sizeof(rom[0])); i>=0; i--) {
	while((zahl-=romval[i])>0)
		cout << rom[i];
	if(zahl < 0)
		zahl += romval[i];		
	if(zahl == 0) 
		{cout << rom[i]; cout << endl; return  0;}	
}

}
./a.out 1439
Code:
MCDXXXIX
Alive ist offline   Mit Zitat antworten
Alt 31.05.09, 10:57   #39 (permalink)
 
Benutzerbild von pytohn
 
Registriert seit: 28.03.09
pytohn Leistung: Facit NTK
Likes: 0
Standard

hier mal ne python lösung:

Code:
def roemisch(n):
    try:        
        x = n/5000
        summe = x*"A"
        n = n - x * 5000

        x = n/4000
        summe = summe+x*"MA"
        n = n - x * 4000

        x = n/1000
        summe = summe+x*"M"
        n = n - x * 1000

        x = n/900
        summe = summe+x*"CM"
        n = n - x * 900

        x = n/500
        summe = summe+x*"D"
        n = n - x * 500

        x = n/400
        summe = summe+x*"CD"
        n = n - x * 400

        x = n/100
        summe = summe+x*"C"
        n = n - x * 100

        x = n/90
        summe = summe+x*"XC"
        n = n - x * 90

        x = n/50
        summe = summe+x*"L"
        n = n - x * 50

        x = n/40
        summe = summe+x*"XL"
        n = n - x * 40

        x = n/10
        summe = summe+x*"X"
        n = n - x * 10

        x = n/9
        summe = summe+x*"IX"
        n = n - x * 9

        x = n/5
        summe = summe+x*"V"
        n = n - x * 5

        x = n/4
        summe = summe+x*"IV"
        n = n - x * 4

        x = n/1
        summe = summe+x*"I"

        return summe

    except:
            print "Es trat leider ein Fehler auf"
Angehängte Dateien
Dateityp: zip roemisch.zip (379 Bytes, 1x aufgerufen)
Dateityp: zip roemisch4unix.zip (392 Bytes, 1x aufgerufen)
pytohn ist offline   Mit Zitat antworten
Alt 14.06.09, 11:18   #40 (permalink)
 
Benutzerbild von Eydeet
 
Registriert seit: 14.04.06
Eydeet Leistung: Facit NTK
Likes: 4
Standard

Nochmal als Haskell-Programm:
Code:
rome num pos s = do
    let myVal = rv !! pos
    if myVal <= num
        then do
            rome (num - myVal) pos (s ++ (rc !! pos))
        else if num > 0
            then rome num (pos + 1) s
            else putStrLn s
    where
        rc = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"]
        rv = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

main = do
    putStrLn "Zahl: "
    n <- getLine
    rome (read n) 0 "Ergebnis: "
Wenn ich wieder Unsinn gebaut habe: Über konstruktive Verbesserungsvorschläge freue ich mich immer!
Eydeet ist offline   Mit Zitat antworten
Alt 14.06.09, 15:16   #41 (permalink)
Senior Member
 
Registriert seit: 03.09.05
Lesco Leistung: Facit NTK
Likes: 0
Standard

Zitat:
Wenn ich wieder Unsinn gebaut habe: Über konstruktive Verbesserungsvorschläge freue ich mich immer!
Ich halte es für eine nicht so gute Idee, die Ausgabe mit in der Umwandlungsfunktion zu erledigen, da es dann keine "normale" Funktion mehr ist(Stattdessen hat sie dann als Rückgabetyp `IO String'), und du sie schlechter in anderen Berechnungen verwenden kannst. Stattdessen würde ich rome als Integer -> String umsetzen und die Ein/Ausgabe dann in main oder sonstwo erledigen.
Hier noch eine Variante in Haskell, die ich noch auf der Platte rumliegen hatte(keine Prüfung auf ungültige Eingaben):
Code:
import Data.List
import Data.Ord

digits = [("A",5000),("MA",4000),("M",1000),("CM",900),("D",500),("CD",400),("C",100),
          ("XC",90),("L",50),("XL",40),("X",10),("IX",9),("V",5),("IV",4),("I",1)]

toRoman 0 = ""
toRoman d = let match = head $ filter ((<=d) . snd) digits
            in fst match ++ (toRoman $ d - snd match)

toDec [] = 0
toDec str = let table = reverse $ sortBy (comparing (length . fst)) digits
                match = head $ filter ((`isPrefixOf` str) . fst) table
            in snd match + (toDec $ drop (length $ fst match) str)
Lesco ist offline   Mit Zitat antworten
Alt 21.01.10, 16:50   #42 (permalink)
 
Registriert seit: 03.12.09
X_10 Leistung: Facit NTK
Likes: 0
Talking Java Lösung

Hier ist meine Java-Lösung:

code   

public String umrechnen(int zahl){
String erg ="";

while(zahl >= 1000){
erg +="M";
zahl -= 1000;
}while(zahl >= 500){
erg +="D";
zahl -= 500;
}while(zahl >= 100){
erg +="C";
zahl -= 100;
}while(zahl >= 50){
erg +="L";
zahl -= 50;
}while(zahl >= 10){
erg +="X";
zahl -= 10;
}while(zahl >= 5){
erg +="V";
zahl -= 5;
}while(zahl >= 1){
erg +="I";
zahl -= 1;
}

return erg;
}


Ist übrigens mein erstes Java-Programm.
X_10 ist offline   Mit Zitat antworten
Alt 07.02.10, 17:57   #43 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: Z3
Likes: 24
Standard

Auch wenns geschummelt ist:
Code:
(defun print-roman (num)
  (format t "~@R" num))
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
Alt 26.07.10, 22:37   #44 (permalink)
 
Registriert seit: 26.07.10
norman1990 Leistung: Facit NTK
Likes: 0
Standard Römische Zahlen Convertieren

Also ich habe das so gemacht(in c++), ist das ok?
mit dieser funktion:
Code:
string RomToDec(int x)
{
       int a=x;
       string numb;
       while(a>=1000)
       {
          numb+="M";
          a-=1000;
       };
       while(a>=500)
       {
          if(a>=900)
          {
             numb+="CM";
             a-=900;
          }
          numb+="D";
          a-=500;
       }
       while(a>=100)
       {
          if(a>=400){numb+="CD";a-=400;};
          if(a>100){numb+="C";a-=100;};
       }
       while(a>=50)
       {
          if(a==90){numb+="XC";a-=90;};
          if(a>=50){numb+="L";a-=50;};
       }
       while(a>=10)
       {
          if(a==40){numb+="XL";a-=40;};
          if(a>=10){numb+="X";a-=10;};
       }
       while(a>=5)
       {
          if(a==9){numb+="IX";a-=9;};
          if(a>=5){numb+="V";a-=5;};
       }
       while(a>=1)
       {
          if(a==4){numb+="IV";a-=4;};
          numb+="I";a-=1;
       }                                 
       return numb;
}
Scheint bei mir zu funktionieren...

Geändert von CDW (27.07.10 um 12:35 Uhr) Grund: CodeTags :)
norman1990 ist offline   Mit Zitat antworten
Alt 26.07.10, 22:50   #45 (permalink)
Moderator
 
Benutzerbild von Tarantoga
 
Registriert seit: 11.02.06
Tarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga QuadcoreTarantoga Quadcore
Likes: 195
Standard

Zitat:
norman1990:
Also ich habe das so gemacht(in c++), ist das ok?
Wenn es bei Dir funktioniert ist das ein guter Hinweis darauf das der Code ok ist...

Aber falls Du möchtest das sich jemand den Code näher ansieht, solltest Du in Zukunft beim posten von Code die Code-Tags nicht vergessen - das macht das ganze viel übersichtlicher und somit einfacher.
Tarantoga ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Römische Zahlen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zahlen per SMS Dawen Internet Allgemein 3 06.07.08 01:22
Zahlen ordnen C++ Tux1990 Code Kitchen 3 26.02.07 18:02
C/C++ Römische in Arabische Zahlen konvertieren + Batchkonvertierung Fifilip Code Kitchen 7 13.12.06 07:59
Problem mit Zahlen in PHP! PtB (Web-) Design und webbasierte Sprachen 2 01.02.05 14:12
Zahlen in Excel nook Windows 1 15.06.02 13:47


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