Problem mit "Anfängerprogramm"

Status
Nicht offen für weitere Antworten.

-Mario-

Gesperrt
Hallo erstmal ,
ich bin neu hier und kenn mich nicht so gut mit c++ aus...

Wir müssen Programme für die Schule schreiben, deswegen werd ich hier öfter mal Fragen stellen und so wär sehr nett wenn ihr mir helfen könntet...

Die Programmbeispiele sind Wiederholungen und ich hätte ne Frage zu einem Programm ,das ich machen muss.

"Schreibe ein Programm das eine arabische Zahl in eine römische Zahl umwandelt.
M ... 1000 D ... 500 C ... 100 L ... 50 X ... 10 V ... 5 I ... 1
900 ... CM 400 ... CD 90 ... XC 40 ... XL 9 ... IX 4 ... IV"

das Beispiel sieht so aus...

Ich hab keine Ahnung wie ich das umsetzen soll da wir bis jetzt nur Programme zu Abfragen gemacht haben...

Wär echt nett wenn ihr mir helfen könntet..

Danke im vorraus,

Mario
 
Arrays für Arab und Roman erstellen

Bsp.: int arab[] = {1000, 500, 100 ....}

Code:
for(i=0; i<=ende_von_arab; i++)
{
    while(zahl - i > 0)
    {
         if(zahl != sonderfall)
         {
             printf("%c", Roman[i]);
             zahl -=i;
         }
         else
         {
             printf( // Sonderfall-Abwicklung (switch oder mehrere ifs)
             zahl -= Sonderfall;
         }
    }

}


Was jetzt die Sonderfälle sind, finde bitte selbst raus.

Etwas darfst du schon selber machen :)

cu shutdown
 
Zuletzt bearbeitet:
hmm, mir is dieses "printf" neu , ich kenn das gar nicht und gemacht haben wir es auch nicht...

kann man das nicht irgendwie anders bzw "leichter" schreiben ?
 
Die frage ist auch, was du bisher alles im Unterricht gelernt hast.

Es gibt das sicher mehrere Möglichkeiten das Problem zu lösen.

Ich veruch dir jetzt einfach mal einen anfängertauglichen Hinweis zu geben wie es gehen könnte:


Lass dir vom Nutzer eine Zahl eingeben.

Prüfe wie oft die Zahl durch 1000 teilbar ist.
Schreibe so oft ein M wie sich die Zahl hatte teilen lassen in einen String.
Ziehe von der ursprünglichen Zahl so oft 1000 ab wie sie sich hat teilen lassen.

Teile die nun kleinere Zahl durch 500
Schribe so oft ein D wie sich die Zahl hatte teilen lassen in den String.
Ziehe von der Zahl so oft 500 ab wie sie sich hat teilen lassen.

...usw.

Gib am Ende den Stribng mit der Römischen Zahl aus


Ich vermute mal so oder ähnlich will es dein Lehrer. Es gibt sicher wesentlich elegantere Möglichkeiten. Ab ich geh ma von aus das die Übung dazu dient C in den Grundzugen zu begreifen und zu üben.
Also n bischen Rechnen, n bischen IF-Schleifen, n bischen Eingabe und Ausgabe.
Dafür wäre obiger Lösungsweg siche empfehlenswert.
 
Wenn ich das ganz simpel machen sollte würde ich glaub ich einfach eine while Schleife und ein paar If-Anweisungen nehmen um das ganze zu verwirklichen.
 
Coalminer hat gesagt.:
Die frage ist auch, was du bisher alles im Unterricht gelernt hast.

Es gibt das sicher mehrere Möglichkeiten das Problem zu lösen.

Ich veruch dir jetzt einfach mal einen anfängertauglichen Hinweis zu geben wie es gehen könnte:


Lass dir vom Nutzer eine Zahl eingeben.

Prüfe wie oft die Zahl durch 1000 teilbar ist.
Schreibe so oft ein M wie sich die Zahl hatte teilen lassen in einen String.
Ziehe von der ursprünglichen Zahl so oft 1000 ab wie sie sich hat teilen lassen.

Teile die nun kleinere Zahl durch 500
Schribe so oft ein D wie sich die Zahl hatte teilen lassen in den String.
Ziehe von der Zahl so oft 500 ab wie sie sich hat teilen lassen.

...usw.

Gib am Ende den Stribng mit der Römischen Zahl aus


Ich vermute mal so oder ähnlich will es dein Lehrer. Es gibt sicher wesentlich elegantere Möglichkeiten. Ab ich geh ma von aus das die Übung dazu dient C in den Grundzugen zu begreifen und zu üben.
Also n bischen Rechnen, n bischen IF-Schleifen, n bischen Eingabe und Ausgabe.
Dafür wäre obiger Lösungsweg siche empfehlenswert.

Gut aber du vergisst eines: Im Römischen Zahlenmsystem gib es auch subtraktionen in den Zahlen selbst d.h. z.B. 4 = IV
Da wird das ganze schon schwieriger.
Wenn ich zeit und lust habe schreib ich das prig mal komplett und poste es.
 
Also an sich kann man das Programm recht simpel halten wenn man z.b. einen Ansatz wie
Code:
int arab;
  cin >> arab;
  while(arab >0){
  if(arab >= 1000){cout << "M";arab-=1000;continue;}
  if(arab >= 900){cout << "CM";arab-=900;continue;}
  if(arab >= 500){cout << "D";arab-=500;continue;}

nutzt das muss man eigentlich nur entsprechend fortsetzten bis if( arab >=4)
Ist eigentlich recht kurz sind ja nur knapp 25 Zeilen.
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück