Numere romane in numere arabe (si invers)
Last Updated: May 20 2014 09:05, Started by
SROBogdan
, May 20 2014 09:05
·
0
#1
Posted 20 May 2014 - 09:05
Salut,
Puteti sa imi spuneti si mie cam care ar fi problema cu acest program? Va atasez aici ce am lucrat (tin sa mentionez ca in liceu am studiat C/C++ si nu prea cunosc pascal) Va multumesc! program romane_arabe; var m:integer; total:integer; ok:integer; aux:integer; dim:integer; arabnum:integer; n:integer; i:integer; roman:string; string_arab:string; x: char; V:array[1..10]of integer; arab:array[1..4]of integer; procedure cifra(x:integer); begin if x=1 then write('I') else if x=2 then write('II') else if x=3 then write('III') else if x=4 then write('IV') else if x=5 then write('V') else if x=6 then write('VI') else if x=7 then write('VII') else if x=8 then write('VIII') else if x=9 then write('IX') else write('Numarul nu este valid'); end; procedure zeci(x:integer); begin if x=1 then write('X') else if x=2 then write('XX') else if x=3 then write('XXX') else if x=4 then write('XL') else if x=5 then write('L') else if x=6 then write('LX') else if x=7 then write('LXX') else if x=8 then write('LXXX') else if x=9 then write('XC') else write('Numarul nu este valid'); end; procedure sute(x:integer); begin if x=1 then write('C') else if x=2 then write('CC') else if x=3 then write('CCC') else if x=4 then write('CD') else if x=5 then write('D') else if x=6 then write('DC') else if x=7 then write('DCC') else if x=8 then write('DCCC') else if x=9 then write('CM') else write('Numarul nu este valid'); end; procedure mie(x:integer); begin if x=1 then write('M') else if x=2 then write('MM') else if x=3 then write('MMM') else if x=4 then write('MMMM') else if x=5 then write('MMMMM') else if x=6 then write('MMMMMM') else if x=7 then write('MMMMMMM') else if x=8 then write('MMMMMMMM') else if x=9 then write('MMMMMMMMM') else write('Numarul nu este valid'); end; function RoAr(x: char): integer; begin case x of 'I': RoAr:=1; 'V': RoAr:=5; 'X': RoAr:=10; 'L': RoAr:=50; 'C': RoAr:=100; 'D': RoAr:=500; 'M': RoAr:=1000; end; begin for i:=0 to 10 do begin roman[i]:='A'; end; for i:=0 to 10 do begin V[i]:=0; end; writeln('1 pentru cifre romane in arabe'); writeln('2 pentru cifre arabe in romane'); readln(n); if n=1 then begin writeln('Introduceti lungimea numarului roman: '); readln(n); writeln('Introduceti numarul roman: '); for i:=0 to n do begin readln(roman[i]); end; for i:=0 to n do begin if (roman[i]>'A') and (roman[i]<'z') then begin for i:=0 to n do begin V[i]:=RoAr(roman[i]); end; total:=V[n-1]; for i:=n-1 downto 0 do begin if V[i]>V[i+1] then total:=total-V[i] else begin total:=total+V[i]; write(total); write(roman); end; end else begin write('Sirul de caractere nu este valid, introduceti alt numar'); readln(roman); end; end; {am inchis for-ul} end; {am inchis ramura cu n=1} else if n=2 then begin writeln('introduceti numarul arab: '); readln(arabnum); aux:=arabnum; {auxiliarul este folosit la calculul lungimii} dim:=0; while aux>0 do begin dim:=dim+1; aux:=aux/10; end; {*!*!* conversie numar real in integer} for i:=dim-1 downto 0 do begin arab[i]:=arabnum mod 10; {ultima cifra din arabnum ?!} arabnum:=arabnum/10; end; for i:=0 to n do if (arab[i]>=0) and (arab[i]<=9) then ok:=1; if ok=1 then begin if dim=4 then begin for i:=0 to dim do if i=0 then mie(arab[i]); else if i=1 then sute(arab[i]); else if i=2 then zeci(arab[i]); else do cifra(arab[i]); end; else if dim=3 then begin for i:=0 to dim do if i=0 then sute(arab[i]); else if i=1 then zeci(arab[i]); else if i=2 then cifra(arab[i]); end; else if dim=2 begin for i:=0 to dim do if i=0 then zeci(arab[i]); else then cifra(arab[i]); end; else if dim=1 then cifra(arab[i]); end; {am inchis ramura cu ok=1} else writeln('Introduceti valorea 1 sau 2'); end; {am inchis ramura cu n=2} end. {am inchis programul} |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users