| 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. |
Diskussion: Römische Zahlen im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Danke. Fehler beseitigt....
![]() |
| | #17 (permalink) |
| Registriert seit: 02.08.06 ![]() Likes: 0 | schaut mal hier. mfg jon2 edit: wie ist das eigentlich mit zahle über 19999 dann sind ja 4 A hintereinander? |
| | |
| | #18 (permalink) | |
| Member of Honour ![]() Registriert seit: 28.05.03 ![]() Likes: 1 | @Jon2 Zitat:
__________________ http://livehabo.hackerboard.de | http://livebb.sourceforge.net | |
| | |
| | #19 (permalink) |
| Registriert seit: 12.08.06 ![]() Likes: 0 | hi, hier mal ne Java-Version: Java |
| | |
| | #20 (permalink) |
| Senior Member Registriert seit: 28.08.05 ![]() Likes: 0 | Eine Variante mit Perl: |
| | |
| | #22 (permalink) |
| Registriert seit: 14.04.06 ![]() Likes: 4 | Lösung in PHP incl. Subtraktions- und Rahmenregel |
| | |
| | #23 (permalink) |
| Registriert seit: 04.12.06 ![]() Likes: 0 | Meine Lösung in VBA, berücksichtigt die Subtraktionsregel (Allerdings werden bei Zahlen über 19999 einfach noch mehr "A" eingefügt) Code: Public Sub numbers()
MsgBox "Römische Zahl:" & vbCrLf & vbCrLf & convert((InputBox("Dezimalzahl:", "Dez > Röm Converter";)))
End Sub
Public Function convert(value As Integer)
Dim result, roman(14) As String
roman(0) = "A"
roman(1) = "MA"
roman(2) = "M"
roman(3) = "CM"
roman(4) = "D"
roman(5) = "CD"
roman(6) = "C"
roman(7) = "XC"
roman(8) = "L"
roman(9) = "XL"
roman(10) = "X"
roman(11) = "IX"
roman(12) = "V"
roman(13) = "IV"
roman(14) = "I"
Dim dez(14) As Integer
dez(0) = 5000
dez(1) = 4000
dez(2) = 1000
dez(3) = 900
dez(4) = 500
dez(5) = 400
dez(6) = 100
dez(7) = 90
dez(8) = 50
dez(9) = 40
dez(10) = 10
dez(11) = 9
dez(12) = 5
dez(13) = 4
dez(14) = 1
For i = 0 To 14
While (value / dez(i)) >= 1
result = result & roman(i)
value = value - dez(i)
Wend
Next
convert = result
End Function |
| | |
| | #24 (permalink) |
| Habe das ganz mla in C++ gezaubert: C++ Das mit den break, kann man zwar auch durch for-varitante , aber ich wollte schon immer mla break ausprobieren. gruß stein
__________________ Steinhagelvoll | |
| | |
| | #25 (permalink) | |
| Registriert seit: 05.04.07 ![]() Likes: 0 | Zitat:
| |
| | |
| | #26 (permalink) |
| Hier meine Version in PVX: Code: PRINT "Bitte geben Sie eine ganze Dezimalzahl ein,"
PRINT "f",CHR(252),"r die berechnung ins R",CHR(246),"mische Zahlensystem."
INPUT "Eingabe: ",E
E=INT(E)
Dim rz$(29),dez(29)
rz$(1) = "A"
rz$(2) = "MA"
rz$(5) = "M"
rz$(6) = "CM"
rz$(9) = "D"
rz$(10) = "CD"
rz$(13) = "C"
rz$(14) = "XC"
rz$(17) = "L"
rz$(18) = "XL"
rz$(21) = "X"
rz$(22) = "IX"
rz$(25) = "V"
rz$(26) = "IV"
rz$(29) = "I"
dez(1) = 5000
dez(2) = 4000
dez(5) = 1000
dez(6) = 900
dez(9) = 500
dez(10) = 400
dez(13) = 100
dez(14) = 90
dez(17) = 50
dez(18) = 40
dez(21) = 10
dez(22) = 9
dez(25) = 5
dez(26) = 4
dez(29) = 1
result$=""
I=1
WHILE I<>29
WHILE E-dez(I)>=0.0000
IF MOD(I,2)=1 THEN {
result$ = result$+rz$(I,1)
} ELSE {
result$ = result$+rz$(I,2)
}
E = E - dez(I)
WEND
IF MOD(I,2)=0 THEN {
I+=3
} ELSE {
I++
}
WEND
PRINT result$ 20000 = AAAA | |
| | |
| | #27 (permalink) |
| Guest Likes: | Gibt es hier eigentlich jemanden, der sich mit der Programmiersprache Oberon 2 auskennt und dazu ein entsprechendes Programm zum Umrechnen ins römische Zahlensystem schreiben kann? |
|
| | #28 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() Likes: 156 | Dein Link zeigt auf eine Entwicklungsumgebung für Oberon-2/Java/C++, keine eigentständige Programmiersprache.
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
| | #30 (permalink) |
| Registriert seit: 05.05.07 ![]() Likes: 0 | 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;
}
} |
| | |
![]() |
| | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |