Vous êtes sur la page 1sur 4

/*AEDS1TrabalhoPrtico2RomanosvsArbicos

Turma:B2
Aluna:RenataAlvesAntunesTeles
*/
#include<stdio.h>
voidconversao_para_romano(intA,intnA[A]){
inti,j,un,dez,cent,mil//Avarivel'j'svaiajudarnoacrscimodesmbolos.
for(i=0i<Ai++){
un=nA[i]%10,dez=(nA[i]%100)/10,cent=(nA[i]%1000)/100,mil=nA[i]/1000
for(j=1j<=milj++)printf("M")
if(cent<=3)for(j=1j<=centj++)printf("C")
elseif(cent==4)printf("CD")
elseif(cent==5)printf("D")
elseif(cent==9)printf("CM")
else{
printf("D")
for(j=1j<=cent5j++)printf("C")
}
if(dez<=3)for(j=1j<=dezj++)printf("X")
elseif(dez==4)printf("XL")
elseif(dez==5)printf("L")
elseif(dez==9)printf("XC")
else{
printf("L")
for(j=1j<=dez5j++)printf("X")
}
if(un<=3)for(j=1j<=unj++)printf("I")

elseif(un==4)printf("IV")
elseif(un==5)printf("V")
elseif(un==9)printf("IX")
else{
printf("V")
for(j=1j<=un5j++)printf("I")
}
}
}
intconversao_para_arabico(intj,charnR[]){
inti,arabico=0
for(i=0i<ji++){
if(nR[i]=='M')arabico+=1000
if(nR[i]=='D')arabico+=500
if(nR[i]=='L')arabico+=50
if(nR[i]=='V')arabico+=5
if((nR[i]=='M'&&nR[i1]=='C')||(nR[i]=='D'&&nR[i1]=='C')){
arabico=100
nR[i1]='A'//Umcaracterealeatrio,
pranointerferirnasomavarivel'arabico'.
}
if((nR[i]=='C'&&nR[i1]=='X')||(nR[i]=='L'&&nR[i1]=='X')){
arabico=10
nR[i1]='A'
}
if((nR[i]=='X'&&nR[i1]=='I')||(nR[i]=='V'&&nR[i1]=='I')){
arabico=1

nR[i1]='A'
}
}
for(i=0i<ji++){//Quisrecomearoloopparaevitarproblemasnacontagem,comoa
adiodeumnmeroqueestatuandodeformanegativa.
if(nR[i]=='I')arabico+=1
if(nR[i]=='X')arabico+=10
if(nR[i]=='C')arabico+=100
}
returnarabico
}

intmain(){
intA,R,nA[500],i,A_R[500]
charnR[20]//Onmeroemromanomaisextenso,considerandoointervalo
delimitado,MMMDCCCLXXXVIII=3888,epossui15caracteres.Euchuteium
espaodememriaumpoucomaiorparaeviarproblemas.
scanf("%d%d",&A,&R)
for(i=1i<=Ai++)scanf("%d",&nA[i1])//SeA=0,ovetornAnoserlido.Omesmo
ocorrecomnR,seR=0.
for(i=1i<=Ri++){
j=0
scanf("%c",&nR[j])//Paralerumnicocaractereeentrarnoloop.
while(nR[j]!='\n')scanf("%c",&nR[++j])//Oloopparaleiturade1nmero
emromanoduraatousurioapertar'ENTER'.
R_A[i1]=conversao_para_arabico(j,nR)//Cadaentradadessevetorsero
num.arbicocorrespondenteaumnum.emromanodigitado.
}
conversao_para_romano(A,nA)

for(i=0i<Ri++)printf("%d\n",R_A[i])
return0
}

Antesdetudo,deveselembrardarestrioparaosnmerosndigitados(0<n<4000).
Nahoradeconverterumnmeroemarbicopararomano,oprogramaoseparaemalgarismos.
Sehouveralgumalgarismonacasadosmilhares,aquantidadedeMsimpressosseraindicada
peloalgarismo.(Ex:3>MMM2>MM)
Noscasosdascentenas,dezenaseunidades,separeiosemcasos.Seoalgarismo
correspondentefor:
Menorouiguala3:Fazseomesmocomosmilhares,mascomosrespectivossmbolos
Iguala4:Serimpressoocorrespondentea400,40ou4
Iguala5:Serimpressoocorrespondentea500,50ou5
Iguala9:Serimpressoocorrespondentea900,90ou9
Quantoaoresto:Imprimeocorrespondentea500,50ou5,edepois,aquantidadedetermos
correspondentesa100,10ou1quecoincidecom(algarismo5).

Asentradastestadaseassadasobtidasforam:
ENTRADA
34
5
2013
3999
X
DCC
CD
MMMDCCCLXXXVIII

SADA
V
MMXIII
MMMCMXCIX
10
700
400
3888

Vous aimerez peut-être aussi