Rezolvare completă PbInfo #3144 Cifre_romane

Cerință

Alexandru a învățat azi despre numerele romane și cum se scriu acestea. Fiind distras de ce spuneau colegii a ajuns acasă și a realizat că nu știe cum să transforme un număr din cifre arabe în cifre romane. Deoarece a doua zi are un test numai din acest capitol, vă roagă să îl ajutați la transformarea unui număr N dat, scris cu cifre arabe în cifre romane.

Date de intrare

Fișierul cifre_romane.in conține un număr natural N scris cu cifre arabe.

Date de ieșire

Fișierul cifre_romane.out va conține scrierea cu cifre romane a lui N.

Restricții

  • 1≤N≤3999
  • cifrele romane sunt:
    • I=1
    • V=5
    • X=10
    • L=50
    • C=100
    • D=500
    • M=1000

Exemplu

cifre_romane.in

4

cifre_romane.out

IV

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Cifre_romane:

#include <fstream>
#include <algorithm>
using namespace std;
char v[5];
string v2[55];
int main()
{
    ifstream cin ("cifre_romane.in");
    ofstream cout ("cifre_romane.out");
    int cnt=0;
    char c;
    while(cin>>c)
    {
        cnt++;
        v[cnt]=c;
    }
    if(cnt==1)
    {
        v[4]=v[1];
        v[1]=0;
    }
    else if(cnt==2)
    {
        v[4]=v[2];
        v[3]=v[1];
    }
    else if(cnt==3)
    {
        v[4]=v[3];
        v[3]=v[2];
        v[2]=v[1];
    }
    for(int i=4-cnt+1;i<=4;i++)
    {
        if(i==1)
        {
            if(v[i]=='1')
                cout<<"M";
            if(v[i]=='2')
                cout<<"MM";
            if(v[i]=='3')
                cout<<"MMM";
        }
        else if(i==2)
        {
            if(v[i]=='9')
                cout<<"CM";
            else if(v[i]=='4')
                cout<<"CD";
            else
            {
                int val=(int)(v[i]-'0');
                if(val>=5)
                    cout<<"D";
                val%=5;
                for(int j=1;j<=val;j++)
                    cout<<"C";
            }
        }
        else if(i==3)
        {
            if(v[i]=='9')
                cout<<"XC";
            else if(v[i]=='4')
                cout<<"XL";
            else
            {
                int val=(int)(v[i]-'0');
                if(val>=5)
                    cout<<"L";
                val%=5;
                for(int j=1;j<=val;j++)
                    cout<<"X";
            }
        }
        else if(i==4)
        {
            if(v[i]=='9')
                cout<<"IX";
            else if(v[i]=='4')
                cout<<"IV";
            else
            {
                int val=(int)(v[i]-'0');
                if(val>=5)
                    cout<<"V";
                val%=5;
                for(int j=1;j<=val;j++)
                    cout<<"I";
            }
        }
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3144 Cifre_romane

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3144 Cifre_romane de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!