Mój program ma w założeniu zamienić liczbę rzymska na arabską. Program działa, lecz np. w momencie wpisania IIII wyskakuje że to jest 4 choć nie m takiej liczby. To samo jak się wpisze IC, choć nie ma takiej liczby on ją przelicza. Jak napisać funkcję/pętlę/cokolwiek co sprawdzi poprawność wprowadzonej liczby i ewentualnie poinformuje o błędzie? Program zaczerpnięty z internetu. Potrzebuje go w pełni działającego na zaliczenie, z programowania jestem noga, i nigdy nie będę programistą, ale swoje muszę przejść.
char rzymska[24];
void RzymToArab(char* zawartosc)
{
int wynik = 0;
for(int i = 0; i <= 24; i++)
{
if(zawartosc[i] == 'I' && zawartosc[i+1] == 'V')
{
wynik+=4;
i++;
}
else if(zawartosc[i] == 'I' && zawartosc[i+1] == 'X')
{
wynik+=9;
i++;
}
else if(zawartosc[i] == 'X' && zawartosc[i+1] == 'L')
{
wynik+=40;
i++;
}
else if(zawartosc[i] == 'X' && zawartosc[i+1] == 'C')
{
wynik+=90;
i++;
}
else if(zawartosc[i] == 'C' && zawartosc[i+1] == 'D')
{
wynik+=400;
i++;
}
else if(zawartosc[i] == 'C' && zawartosc[i+1] == 'M')
{
wynik+=900;
i++;
}
else if(zawartosc[i] == 'I')
{
wynik++;
}
else if(zawartosc[i] == 'V')
{
wynik+=5;
}
else if(zawartosc[i] == 'X')
{
wynik+=10;
}
else if(zawartosc[i] == 'L')
{
wynik+=50;
}
else if(zawartosc[i] == 'C')
{
wynik+=100;
}
else if(zawartosc[i] == 'D')
{
wynik+=500;
}
else if(zawartosc[i] == 'M')
{
wynik+=1000;
}
else if(!(zawartosc[i]))
{
break;
}
}
cout << wynik << endl;
}
int main()
{
cout << "Podaj cyfre rzymska, ktora chcesz zamienic na arabska: \n\n";
cin >> rzymska;
cout<<"\nTa cyfra w zapisie arabskim to: \n\n";
RzymToArab(rzymska);
cout<<"\n"<<endl;
system("PAUSE");
return 0;
}