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 .
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!