Der Versuch, eine sehr einfache römische Ziffer zu Dezimal-Konverter zu implementieren, aber scheint nicht, einen Weg für das Programm zu finden, um -1 zurückzugeben, wenn nicht römische Ziffern in der Zeichenfolge sind. Das habe ich bisher.Römische Zahl zu Dezimal
#include <stdio.h>
#include <ctype.h>
int convertFromRoman(const char *s)
{
int i = 0;
int total = 0;
while (s[i] != '\0') {
if (isalpha(s[i]) == 0) {
return -1;
}
if (toupper(s[i]) == 'I') {
total += 1;
}
if (toupper(s[i]) == 'V') {
total += 5;
}
if (toupper(s[i]) == 'X') {
total += 10;
}
if (toupper(s[i]) == 'L') {
total += 50;
}
if (toupper(s[i]) == 'C') {
total += 100;
}
if (toupper(s[i]) == 'D') {
total += 500;
}
if (toupper(s[i]) == 'M') {
total += 1000;
} else {
return -1;
}
i++;
}
if (total == 0) {
return -1;
}
return total;
}
int main()
{
printf("%d\n", convertFromRoman("XVII"));
printf("%d\n", convertFromRoman("ABC"));
}
Der erste sollte 17 zurückgeben und der zweite sollte -1 zurückgeben. Beide geben jedoch -1 zurück, aber wenn ich die else-Anweisung entferne, gibt die erste 17 zurück, und die zweite gibt 100 zurück.
Jede Hilfe wird geschätzt.
Wir lösen keine Hausaufgaben für Sie. Wahrscheinlich keine gute Idee, deine erste Zeile als '// Hausarbeit' zu haben. –
Danke für deinen Kommentar @CharlieFish. Fragte niemanden, es zu lösen! War nur auf der Suche nach einem Rat, was ich vermisst habe/verweisen Sie mich auf einige Unterlagen. Leg die Hausaufgaben einfach rein, also habe ich keine vollständige Antwort bekommen, denn das ist keine gute Art zu lernen! – Mikey
Verwenden Sie 'else if'. (aber Ihre Logik hat ein falsches Ergebnis von "IV") – BLUEPIXY