Arabische Zahlen in Römische Zahlen konvertieren in C

Hi, ich bräuchte einmal dringend Hilfe.
Wir haben in Informatik folgende Aufgabe bekommen:
Wir sollen ein Programm erstellen, dass Arabische Zahlen in Römische konvertiert. Dabei soll aber darauf geachtet werden, dass kein Buchstabe, abgesehen vom "M", mehr als dreimal hintereinander verwendet werden darf.
Will sagen, dass Zahlen wie 9 nicht durch XIIII sondern durch IX dargestellt werden sollen.

Leider hab ich nicht allzuviel Ahnung davon, wie man ein solches Programm in Visual Basic 2005 programmiert.
Wäre echt nett, wenn mir hier abgeholfen werden könnte.
Ich bedanke mich schonmal im Voraus ;)
 
Zuletzt bearbeitet:
Mit der Suchfunktion hab ich schon einige Sachen gefunden, welche aber teils fehlerhaft waren.
Es geht mir auch nicht unbedingt ums Lernen, da der Kurs nur eine einmalige Sache ist und zum Studium nix beiträgt ;)
 
Ich weiß ja nicht, was du studierst, aber es kann eigentlich nie schaden, so ein paar Grundlagen mal zu lernen und diese spezielle Aufgabe nutzt halt einige davon.
Und bei dem Spruch "es geht mir nicht ums lernen" sollte man wirklich überlegen, ob ein Studium wirklich das ist, was man machen möchte ;)
 
So, ich hab jetzt mal nen bisschen selber gebastelt und zusammengeklaut.
Das Programm funktioniert soweit, aber leider bekomme ich es einfach nicht mit der Subtraktionsregel hin.
Anstelle von 4 schreibt er mir IIII und nicht IV.
Wie kann ich das da noch mit reinpacken?

Hier ist mein Programm:
Code:
// Informatik_Projekt.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <stdio.h>
#include <iostream>

using namespace std;

void main()

{       int a;
        float b;
        char c;

        printf("\n Dieses Programm wandelt arabische in roemische Zahlen um!");
        

        //Abbruch- oder Wiederholschleife
        do                                                                                
        {        printf("\n\n Geben Sie eine Zahl ein:");
                

        //Eingabeschleife
                do            

        //Falscheingabe
                {       scanf("%f", &b);   

                        a=(int)b;

                        if (b>8000 || b<1)
                                printf("\n\n Falsche Eingabe\n\n Gib eine Zahl ein:");
                        else
                        {        if(a!=b)
                                        printf("\n\n Falsche Eingabe\n\n Gib eine Zahl ein:");
                        }
                }

                //Roemische Ziffer

                while (b>8000 || b<1 || a!=b);                
                
                printf ("\nRoemische Zahl:");
                
                do
                {        while (b/1000>=1)
                        {        printf("M");
                                 b=b-1000;
                        }        
                }
                while (b>1000);

                do
                {        while (b/500>=1)
                        {        printf("D");
                                 b=b-500;
                        }
                }
                while (b>500);

                do
                {        while (b/100>=1)
                        {        printf("C");
                                 b=b-100;
                        }
                }
                while (b>100);

                do
                {        while (b/50>=1)
                        {        printf("L");
                                 b=b-50;
                        }
                }
                while (b>50);

                do
                {        while (b/10>=1)
                        {        printf("X");
                                 b=b-10;
                        }
                }
                while (b>10);

                do
                {        while (b/5>=1)
                        {        printf("V");
                                 b=b-5;
                        }
                }
                while (b>5);

                do
                {        while (b/1>=1)
                        {        printf("I");
                                 b=b-1;
                        }
                }
                while(b>1);
        
                do
                {       printf("\n\n Neue Zahl berechnen ?  (j/n) ");
                        scanf("%f", &c);
                }
                while((c!='j') && (c!='n'));

        }
        while(c=='j');
}
 
Zuletzt bearbeitet von einem Moderator:
So:
1. Codetags erleichtern das Lesen des Quelltextes ungemein ;)
2. In dieser Form ist es kein C sondern ein C++ Gemisch
3. "float b;" wofür Float? Wenn es eher in int umgewandelt wird.
4. am einfachsten kann man die Subtraktionsregel mit "hardcodierung" hineinpacken. Sprich IF oder SWITCH CASE (je nach Umsetzung). In Deinem Fall:
Code:
 do
                {       
                  if (b>=900)
                  {
                    printf("CM");
                    b=b-900;
                  } 
                  while (b/500>=1)
                  {        
                    printf("D");
                    b=b-500;
                   }
                }
                while (b>500);

                do
                {  
                   if (b>=400)
                   {
                     printf("CD");
                     b=b-400;
                   }      
                   while (b/100>=1)
                   {        
                     printf("C");
                     b=b-100;
                   }
                }
                while (b>100);
... usw
 
Zurück
Oben