Einzelnen Beitrag anzeigen
Alt 21.11.07, 21:13   #30 (permalink)
Punky Duck
 
Registriert seit: 05.05.07
Punky Duck Leistung: Facit NTK
Likes: 0
Standard

Obwohl der letzte Post schon ziehmlich lange her ist dachte ich mir ich veröffentliche auch mal meine Variante. Man möge es mir verzeihen.

Ich habe es in Java geschrieben. Zusätzlich habe ich auch noch die Möglichkeit eingebaut römische Ziffern in Dezimalzahlen umzuwandeln.
Bei der Umrechnung dezimal auf römisch wird die Subtraktionsregel beachtet, nicht aber bei der Umrechnung von römisch auf dezimal. Falls jemand eine einfache Möglichkeit gefunden hat auch bei römisch-dezimal die Subtraktionsregel zu berücksichtigen, möge es mir dieser bitte mitteilen.

Code:
/*Wandelt eingegebene Zahlen in
 roemische Zahlen um*/
 
import java.util.Scanner;

public class romZa
{
[	public static void main(String[] args){
		
		Scanner input=new Scanner(System.in);
		
		
		System.out.println("Please enter number: ");
		int z=input.nextInt();
		
		converter c=new converter(z);
		
		System.out.println(c.convert());
		
		
		System.out.println("Please enter roman number: ");
		input.nextLine();
		String y=input.nextLine();
		
		backConverter b=new backConverter(y);
		
		System.out.println(b.convert());
	}
}
Code:
/*
Zeichen 	I 	V 	X 	L 	C 	D 	M
Wert 		1 	5 	10 	50 	100 	500 	1000
    IV = 4 (statt IIII)
    IX = 9 (statt VIIII)
    XL = 40 (statt XXXX)
    XC = 90 (statt LXXXX)
    CD = 400 (statt CCCC)
    CM = 900 (statt DCCCC) 
*/


public class converter{
	private int number;
	private String rom="";
	
	public converter(int z){
		number=z;
	}
	
	public String convert(){
	
		while(number>0){
			
			if(number>=1000){
				rom=rom+"M";
				number-=1000;
			}
			else if(number==900){
				rom+="CM";
				number-=900;
			}
			else if(number>=500&&number<1000){
				rom+="D";
				number-=500;
			}
			else if(number==400){
				rom+="CD";
				number-=400;
			}
			else if(number>=100&&number<500){
				rom+="C";
				number-=100;
			}
			else if(number==90){
				rom+="XC";
				number-=90;
			}
			else if(number>=50&&number<100){
				rom+="L";
				number-=50;
			}
			else if(number==40){
				rom+="XL";
				number-=40;
			}
			else if(number>=10&&number<50){
				rom+="X";
				number-=10;
			}
			else if(number==9){
				rom+="IX";
				number-=9;
			}
			else if(number>=5&&number<9){
				rom+="V";
				number-=5;
			}
			else if(number==4){
				rom+="IV";
				number-=4;
			}
			else if(number>=1&&number<4){
				rom+="I";
				number-=1;
			}
		}
		return rom;
	}
}
Code:
/*
Zeichen 	I 	V 	X 	L 	C 	D 	M
Wert 		1 	5 	10 	50 	100 	500 	1000
*/

public class backConverter{

	private int number;
	private String rom;
	private int len;
	
	public backConverter(String rom){
		this.rom=rom;
		len=rom.length();
	
	}
	
	public int convert(){
		
		char[] sign=new char[len];
		
		
		for(int i=len-1;i>=0;i--){
			sign[i]=rom.charAt(i);
			
					
		}
		
		while(len>0){
		
			if(sign[len-1]=='I'){
				number+=1;
			}
			else if(sign[len-1]=='V'){
				number+=5;
			}
			else if(sign[len-1]=='X'){
				number+=10;
			}
			else if(sign[len-1]=='L'){
				number+=50;
			}
			else if(sign[len-1]=='C'){
				number+=100;
			}
			else if(sign[len-1]=='D'){
				number+=500;
			}
			else if(sign[len-1]=='M'){
				number+=1000;
			}
		
		
		len--;
		}
		return number;
		
	}
}
Punky Duck ist offline   Mit Zitat antworten
 

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