C-Programm zur Umwandlung römischer Zahlen in Dezimalzahlen: Abbruchbedingung funktioniert nicht und Anforderung wird zweimal ausgegeben?
Also, ich habe hier ein Programm geschrieben, welches römische Zahlen in Dezimalzahlen umwandelt.
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a;
int weiter = 1;
while (weiter) {
printf("Geben Sie eine roemische Ziffer ein: ");
scanf("%c", &a);
switch (a) {
case 'I':
puts("Der Dezimalwert der Eingabe ist: 1\n");
break;
case 'V':
puts("Der Dezimalwert der Eingabe ist: 5\n");
break;
case 'X':
puts("Der Dezimalwert der Eingabe ist: 10\n");
break;
case 'L':
puts("Der Dezimalwert der Eingabe ist: 50\n");
break;
case 'C':
puts("Der Dezimalwert der Eingabe ist: 100\n");
break;
case 'D':
puts("Der Dezimalwert der Eingabe ist: 500\n");
break;
case 'M':
puts("Der Dezimalwert der Eingabe ist: 1000\n");
break;
default:
if (weiter == 0) {
printf("Sie haben keine roemische Ziffer eingegeben.\n");
break;
}
}
}
return 0;
}
Leider funktioniert die Abbruchbedingung nicht und die Anforderung, also printf, wird immer zweimal angegeben.
So sieht es dann aus:
1 Antwort
Vom Fragesteller als hilfreich ausgezeichnet
Du setzt den Wert von weiter nur einmal auf 1. Dann wird er nie mehr verändert.
if (weiter == 0)
prüft nur und setzt nicht. Hier müsstest du aber
weiter = 0
setzen oder ein anders als der genommenen Zeichen, beispielsweise 'O' nehmen, um das Programm zu beenden. Dazu muss der switch um eine Möglichkeit erweitert werden.
gogogo
18.11.2019, 14:01
@SuggearDaddy
Genau, du hast keine Verarbeitung einer Eingabe, die zu einem Abbruch deines Programmes führt.
du meinst ich soll noch ein case anlegen für die Abbruchbedingung