24.2.3.24010940. Napisati funkciju “rimski“ koja ima jedan parametar “n” koji treba biti prirodan broj manji od 4000 i koja ispisuje odgovarajući broj u rimskoj notaciji. Na primjer, ukoliko se pozove
rimski(1429);
na ekranu treba da se ispiše MCDXXIX. Napisati i kratki glavni program (funkciju “main”) u kojem ćete demonstrirati napisanu funkciju. Glavni program treba tražiti od korisnika unos broja sa tastature, ispisati njegov rimski ekvivalent (ukoliko je broj u propisanom opsegu) i ponavljati taj postupak sve dok korisnik ne unese nulu (što označava kraj rada).

Opis rješenja:

Listing programa:

//pretvara broj u rimski
#include <iostream>
using namespace std;
void rimski(int);
int main(){
int n;
while((cin>>n)&&n!=0){
    if(n<4000){
    rimski(n);
    cout<<endl;
    }
}
return 0;
}
void rimski(int a){
int b[4],j(0);
for(int i=0;i<4;i++)b[i]=0;
while(a!=0){ 
    b[j]=a%10;
    j++;
    a/=10;
}
if(b[3]==1)cout<<"M";
else if(b[3]>1&&b[3]<4){for(int i=1;i<=b[3];i++)cout<<"I";cout<<"M";}
if(b[2]>0&&b[2]<4)for(int i=1;i<=b[2];i++)cout<<"C";
else if(b[2]==4)cout<<"CD";
    else if(b[2]==5)cout<<"D";
        else if(b[2]>5&&b[2]<9){cout<<"D";for(int i=6;i<=b[2];i++)cout<<"C";}
                else if(b[2]==9)cout<<"CM";
if(b[1]>0&&b[1]<4)for(int i=1;i<=b[1];i++)cout<<"X";
else if(b[1]==4)cout<<"XL";
    else if(b[1]==5)cout<<"L";
        else if(b[1]>5&&b[1]<9){cout<<"L";for(int i=6;i<=b[1];i++)cout<<"X";}
            else if(b[1]==9)cout<<"XC";
if(b[0]>0&&b[0]<4)for(int i=1;i<=b[0];i++)cout<<"I";
else if(b[0]==4)cout<<"IV";
    else if(b[0]==5)cout<<"V";
        else if(b[0]>5&&b[0]<9){cout<<"V";for(int i=6;i<=b[0];i++)cout<<"I";}
                else if(b[0]==9)cout<<"IX";
}
    

Ispis na ekranu:

Riješeni zadaci 2    Index