/* vjezba 8, zadatak 25: napisati funkciju koja ce ucitati niz znakova koji predstavlja broj u rimskom zapisu. potprogram mora izracunati koji je to broj u rimskom zapisu... ovaj zadatak posvecujem Sandri.. ;)) (c) KreatoR '97 ? recimo definiranjem tipa rimski=(M,D,C,L,X,V,I) */ #include #include #include int ima(char *ptr, char *c) /* ispituje ima li znaka u stringu, i vraca 1 ako ima, inace 0 */ { int tmp=0; while (*ptr) { if (*ptr==*c) {tmp=1; break;} ptr++; } return tmp; } int dekadski(char *p) /* konvertira rimski broj u dekadski */ { int tmp=0; while (*p) { switch(*p) { case 'M': tmp+=1000; break; case 'D': tmp+=500; break; case 'C': if (ima("MD",p+1)) tmp-=100; else tmp+=100; break; case 'L': if (ima("MDC",p+1)) tmp-=50; else tmp+=50; break; case 'X': if (ima("MDCL",p+1)) tmp-=10; else tmp+=10; break; case 'V': if (ima("MDCLX",p+1)) tmp-=5; else tmp+=5; break; case 'I': if (ima("MDCLXV",p+1)) tmp-=1; else tmp+=1; break; } p++; } return tmp; } main() { char unos[10]; int konv; clrscr(); printf("\nUnesi *normalan* rimski broj "); scanf("%10s",unos); //moglo je i gets(unos) ili petlja sa getchar..... strupr(unos); konv=dekadski(unos); printf("\nDekadska vrijednost je %d",konv); getch(); return 0; }