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;
}
}