Roman number: I,V,X, L, C, D, M
Decimal number: 1,5,10,50,100,500,1000
VI=6
IV=4
sample output is:

First Roman number?XLV
Operator?+
Second Roman number?XVIII
this is 45 plus 18 and answer is LXIII(63).

• : Roman number: I,V,X, L, C, D, M
: Decimal number: 1,5,10,50,100,500,1000
: VI=6
: IV=4
: sample output is:
:
: First Roman number?XLV
: Operator?+
: Second Roman number?XVIII
: this is 45 plus 18 and answer is LXIII(63).
:
Step 1: write a roman to decimal converter and a decimal to roman converter
Step 2: write a program, which can calculate the result of a 2 decimals calculation
Step 3: link those together.
• : : Roman number: I,V,X, L, C, D, M
: : Decimal number: 1,5,10,50,100,500,1000
: : VI=6
: : IV=4
: : sample output is:
: :
: : First Roman number?XLV
: : Operator?+
: : Second Roman number?XVIII
: : this is 45 plus 18 and answer is LXIII(63).
: :
: Step 1: write a roman to decimal converter and a decimal to roman converter
: Step 2: write a program, which can calculate the result of a 2 decimals calculation
: Step 3: link those together.
:
Hey Zib this is a bit complicated for our lil friend I think.
Here's a proc for Dec2Rom:
[code]
function dec2rom(decimal:word):string;
var
Ms,Cs,Xs,Is:byte;
DPrev,LPrev,VPrev:boolean;
idlint:word;
br:string;
n:byte;
begin
idlint:=decimal;
if (idlint<>0) and (idlint>=1000) then begin
Ms:=idlint div 1000;
idlint:=idlint mod 1000;
end;
if (idlint<>0) and (idlint>=100) then begin
if idlint>500 then DPrev:=true;
Cs:=idlint div 100;
idlint:=idlint mod 100;
if DPrev then dec(Cs,5);
end;
if (idlint<>0) and (idlint>=10) then begin
if idlint>50 then LPrev:=true;
Xs:=idlint div 10;
idlint:=idlint mod 10;
if LPrev then dec(Xs,5);
end;
if (idlint<>0) and (idlint>=1) then begin
if idlint>5 then VPrev:=true;
if VPrev then Is:=idlint-5 else Is:=idlint;
end;
br:='';
if Ms>0 then for n:=1 to Ms do br:=br+'M';
if DPrev then br:=br+'D';
if Cs>0 then for n:=1 to Cs do br:=br+'C';
if LPrev then br:=br+'L';
if Xs>0 then for n:=1 to Xs do br:=br+'X';
if VPrev then br:=br+'V';
if Is>0 then for n:=1 to Is do br:=br+'I';
dec2rom:=br;
end;
[/code]

OKS? This will be the Rom2Dec(the simplest):
[code]
function Rom2Dec(rom:string):word;
var
br:word;
n:byte;
begin
br:=0;
for n:=1 to length(rom) do begin
if rom[n]='M' then inc(br,1000);
if rom[n]='D' then inc(br,500);
if rom[n]='C' then inc(br,100);
if rom[n]='V' then inc(br,50);
if rom[n]='X' then inc(br,10);
if rom[n]='L' then inc(br,5);
if rom[n]='I' then inc(br,1);
end;
end;
[/code]
I hope it will work and helps you out.

****************
Any questions? Just ask!

:-) [b][blue]GAASHIUS[/blue][/b] :-)

• : : : Roman number: I,V,X, L, C, D, M
: : : Decimal number: 1,5,10,50,100,500,1000
: : : VI=6
: : : IV=4
: : : sample output is:
: : :
: : : First Roman number?XLV
: : : Operator?+
: : : Second Roman number?XVIII
: : : this is 45 plus 18 and answer is LXIII(63).
: : :
: : Step 1: write a roman to decimal converter and a decimal to roman converter
: : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : Step 3: link those together.
: :
: Hey Zib this is a bit complicated for our lil friend I think.
: Here's a proc for Dec2Rom:
: [code]
: function dec2rom(decimal:word):string;
: var
: Ms,Cs,Xs,Is:byte;
: DPrev,LPrev,VPrev:boolean;
: idlint:word;
: br:string;
: n:byte;
: begin
: idlint:=decimal;
: if (idlint<>0) and (idlint>=1000) then begin
: Ms:=idlint div 1000;
: idlint:=idlint mod 1000;
: end;
: if (idlint<>0) and (idlint>=100) then begin
: if idlint>500 then DPrev:=true;
: Cs:=idlint div 100;
: idlint:=idlint mod 100;
: if DPrev then dec(Cs,5);
: end;
: if (idlint<>0) and (idlint>=10) then begin
: if idlint>50 then LPrev:=true;
: Xs:=idlint div 10;
: idlint:=idlint mod 10;
: if LPrev then dec(Xs,5);
: end;
: if (idlint<>0) and (idlint>=1) then begin
: if idlint>5 then VPrev:=true;
: if VPrev then Is:=idlint-5 else Is:=idlint;
: end;
: br:='';
: if Ms>0 then for n:=1 to Ms do br:=br+'M';
: if DPrev then br:=br+'D';
: if Cs>0 then for n:=1 to Cs do br:=br+'C';
: if LPrev then br:=br+'L';
: if Xs>0 then for n:=1 to Xs do br:=br+'X';
: if VPrev then br:=br+'V';
: if Is>0 then for n:=1 to Is do br:=br+'I';
: dec2rom:=br;
: end;
: [/code]
:
: OKS? This will be the Rom2Dec(the simplest):
: [code]
: function Rom2Dec(rom:string):word;
: var
: br:word;
: n:byte;
: begin
: br:=0;
: for n:=1 to length(rom) do begin
: if rom[n]='M' then inc(br,1000);
: if rom[n]='D' then inc(br,500);
: if rom[n]='C' then inc(br,100);
: if rom[n]='V' then inc(br,50);
: if rom[n]='X' then inc(br,10);
: if rom[n]='L' then inc(br,5);
: if rom[n]='I' then inc(br,1);
: end;
: end;
: [/code]
: I hope it will work and helps you out.
:
: ****************
: Any questions? Just ask!
:
: :-) [b][blue]GAASHIUS[/blue][/b] :-)
:
:
:
Oh sorry, I have forgotten to write the main body of the program:
[code]
uses
crt;

var
op:char;
s1,s2:string;
res:word;

{ converting routines are here }

begin
p1:=0;
p2:=0;
clrscr;
write('First Roman Number?'); readln(s1);
write('Second roman number?'); readln(s2);
if op='+' then res:=rom2dec(s1)+rom2dec(s2);
if op='/' then res:=rom2dec(s1) div rom2dec(s2);
if op='*' then res:=rom2dec(s1)*rom2dec(s2);
if op='-' then res:=rom2dec(s1)-rom2dec(s2);
writeln; writeln('Result:'+res);
end.
[/code]
OKS?

****************
Any questions? Just ask!

:-) [b][blue]GAASHIUS[/blue][/b] :-)

• : : : : Roman number: I,V,X, L, C, D, M
: : : : Decimal number: 1,5,10,50,100,500,1000
: : : : VI=6
: : : : IV=4
: : : : sample output is:
: : : :
: : : : First Roman number?XLV
: : : : Operator?+
: : : : Second Roman number?XVIII
: : : : this is 45 plus 18 and answer is LXIII(63).
: : : :
: : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : Step 3: link those together.
: : :
: : Hey Zib this is a bit complicated for our lil friend I think.
: : Here's a proc for Dec2Rom:
: : [code]
: : function dec2rom(decimal:word):string;
: : var
: : Ms,Cs,Xs,Is:byte;
: : DPrev,LPrev,VPrev:boolean;
: : idlint:word;
: : br:string;
: : n:byte;
: : begin
: : idlint:=decimal;
: : if (idlint<>0) and (idlint>=1000) then begin
: : Ms:=idlint div 1000;
: : idlint:=idlint mod 1000;
: : end;
: : if (idlint<>0) and (idlint>=100) then begin
: : if idlint>500 then DPrev:=true;
: : Cs:=idlint div 100;
: : idlint:=idlint mod 100;
: : if DPrev then dec(Cs,5);
: : end;
: : if (idlint<>0) and (idlint>=10) then begin
: : if idlint>50 then LPrev:=true;
: : Xs:=idlint div 10;
: : idlint:=idlint mod 10;
: : if LPrev then dec(Xs,5);
: : end;
: : if (idlint<>0) and (idlint>=1) then begin
: : if idlint>5 then VPrev:=true;
: : if VPrev then Is:=idlint-5 else Is:=idlint;
: : end;
: : br:='';
: : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : if DPrev then br:=br+'D';
: : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : if LPrev then br:=br+'L';
: : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : if VPrev then br:=br+'V';
: : if Is>0 then for n:=1 to Is do br:=br+'I';
: : dec2rom:=br;
: : end;
: : [/code]
: :
: : OKS? This will be the Rom2Dec(the simplest):
: : [code]
: : function Rom2Dec(rom:string):word;
: : var
: : br:word;
: : n:byte;
: : begin
: : br:=0;
: : for n:=1 to length(rom) do begin
: : if rom[n]='M' then inc(br,1000);
: : if rom[n]='D' then inc(br,500);
: : if rom[n]='C' then inc(br,100);
: : if rom[n]='V' then inc(br,50);
: : if rom[n]='X' then inc(br,10);
: : if rom[n]='L' then inc(br,5);
: : if rom[n]='I' then inc(br,1);
: : end;
: : end;
: : [/code]
: : I hope it will work and helps you out.
: :
: : ****************
: : Any questions? Just ask!
: :
: : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: :
: :
: :
: Oh sorry, I have forgotten to write the main body of the program:
: [code]
: uses
: crt;
:
: var
: op:char;
: s1,s2:string;
: res:word;
:
: { converting routines are here }
:
: begin
: p1:=0;
: p2:=0;
: clrscr;
: write('First Roman Number?'); readln(s1);
: write('Second roman number?'); readln(s2);
: if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: writeln; writeln('Result:'+res);
: end.
: [/code]
: OKS?
:
: ****************
: Any questions? Just ask!
:
: :-) [b][blue]GAASHIUS[/blue][/b] :-)
:
:
:
I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
• : : : : : Roman number: I,V,X, L, C, D, M
: : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : VI=6
: : : : : IV=4
: : : : : sample output is:
: : : : :
: : : : : First Roman number?XLV
: : : : : Operator?+
: : : : : Second Roman number?XVIII
: : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : :
: : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : Step 3: link those together.
: : : :
: : : Hey Zib this is a bit complicated for our lil friend I think.
: : : Here's a proc for Dec2Rom:
: : : [code]
: : : function dec2rom(decimal:word):string;
: : : var
: : : Ms,Cs,Xs,Is:byte;
: : : DPrev,LPrev,VPrev:boolean;
: : : idlint:word;
: : : br:string;
: : : n:byte;
: : : begin
: : : idlint:=decimal;
: : : if (idlint<>0) and (idlint>=1000) then begin
: : : Ms:=idlint div 1000;
: : : idlint:=idlint mod 1000;
: : : end;
: : : if (idlint<>0) and (idlint>=100) then begin
: : : if idlint>500 then DPrev:=true;
: : : Cs:=idlint div 100;
: : : idlint:=idlint mod 100;
: : : if DPrev then dec(Cs,5);
: : : end;
: : : if (idlint<>0) and (idlint>=10) then begin
: : : if idlint>50 then LPrev:=true;
: : : Xs:=idlint div 10;
: : : idlint:=idlint mod 10;
: : : if LPrev then dec(Xs,5);
: : : end;
: : : if (idlint<>0) and (idlint>=1) then begin
: : : if idlint>5 then VPrev:=true;
: : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : end;
: : : br:='';
: : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : if DPrev then br:=br+'D';
: : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : if LPrev then br:=br+'L';
: : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : if VPrev then br:=br+'V';
: : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : dec2rom:=br;
: : : end;
: : : [/code]
: : :
: : : OKS? This will be the Rom2Dec(the simplest):
: : : [code]
: : : function Rom2Dec(rom:string):word;
: : : var
: : : br:word;
: : : n:byte;
: : : begin
: : : br:=0;
: : : for n:=1 to length(rom) do begin
: : : if rom[n]='M' then inc(br,1000);
: : : if rom[n]='D' then inc(br,500);
: : : if rom[n]='C' then inc(br,100);
: : : if rom[n]='V' then inc(br,50);
: : : if rom[n]='X' then inc(br,10);
: : : if rom[n]='L' then inc(br,5);
: : : if rom[n]='I' then inc(br,1);
: : : end;
: : : end;
: : : [/code]
: : : I hope it will work and helps you out.
: : :
: : : ****************
: : : Any questions? Just ask!
: : :
: : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : :
: : :
: : :
: : Oh sorry, I have forgotten to write the main body of the program:
: : [code]
: : uses
: : crt;
: :
: : var
: : op:char;
: : s1,s2:string;
: : res:word;
: :
: : { converting routines are here }
: :
: : begin
: : p1:=0;
: : p2:=0;
: : clrscr;
: : write('First Roman Number?'); readln(s1);
: : write('Operator?'); readln(op);
: : write('Second roman number?'); readln(s2);
: : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : writeln; writeln('Result:'+res);
: : end.
: : [/code]
: : OKS?
: :
: : ****************
: : Any questions? Just ask!
: :
: : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: :
: :
: :
: I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
:
:thank you gaa,zib too
• : : : : : : Roman number: I,V,X, L, C, D, M
: : : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : : VI=6
: : : : : : IV=4
: : : : : : sample output is:
: : : : : :
: : : : : : First Roman number?XLV
: : : : : : Operator?+
: : : : : : Second Roman number?XVIII
: : : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : : :
: : : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : : Step 3: link those together.
: : : : :
: : : : Hey Zib this is a bit complicated for our lil friend I think.
: : : : Here's a proc for Dec2Rom:
: : : : [code]
: : : : function dec2rom(decimal:word):string;
: : : : var
: : : : Ms,Cs,Xs,Is:byte;
: : : : DPrev,LPrev,VPrev:boolean;
: : : : idlint:word;
: : : : br:string;
: : : : n:byte;
: : : : begin
: : : : idlint:=decimal;
: : : : if (idlint<>0) and (idlint>=1000) then begin
: : : : Ms:=idlint div 1000;
: : : : idlint:=idlint mod 1000;
: : : : end;
: : : : if (idlint<>0) and (idlint>=100) then begin
: : : : if idlint>500 then DPrev:=true;
: : : : Cs:=idlint div 100;
: : : : idlint:=idlint mod 100;
: : : : if DPrev then dec(Cs,5);
: : : : end;
: : : : if (idlint<>0) and (idlint>=10) then begin
: : : : if idlint>50 then LPrev:=true;
: : : : Xs:=idlint div 10;
: : : : idlint:=idlint mod 10;
: : : : if LPrev then dec(Xs,5);
: : : : end;
: : : : if (idlint<>0) and (idlint>=1) then begin
: : : : if idlint>5 then VPrev:=true;
: : : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : : end;
: : : : br:='';
: : : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : : if DPrev then br:=br+'D';
: : : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : : if LPrev then br:=br+'L';
: : : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : : if VPrev then br:=br+'V';
: : : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : : dec2rom:=br;
: : : : end;
: : : : [/code]
: : : :
: : : : OKS? This will be the Rom2Dec(the simplest):
: : : : [code]
: : : : function Rom2Dec(rom:string):word;
: : : : var
: : : : br:word;
: : : : n:byte;
: : : : begin
: : : : br:=0;
: : : : for n:=1 to length(rom) do begin
: : : : if rom[n]='M' then inc(br,1000);
: : : : if rom[n]='D' then inc(br,500);
: : : : if rom[n]='C' then inc(br,100);
: : : : if rom[n]='V' then inc(br,50);
: : : : if rom[n]='X' then inc(br,10);
: : : : if rom[n]='L' then inc(br,5);
: : : : if rom[n]='I' then inc(br,1);
: : : : end;
: : : : end;
: : : : [/code]
: : : : I hope it will work and helps you out.
: : : :
: : : : ****************
: : : : Any questions? Just ask!
: : : :
: : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : :
: : : :
: : : :
: : : Oh sorry, I have forgotten to write the main body of the program:
: : : [code]
: : : uses
: : : crt;
: : :
: : : var
: : : op:char;
: : : s1,s2:string;
: : : res:word;
: : :
: : : { converting routines are here }
: : :
: : : begin
: : : p1:=0;
: : : p2:=0;
: : : clrscr;
: : : write('First Roman Number?'); readln(s1);
: : : write('Operator?'); readln(op);
: : : write('Second roman number?'); readln(s2);
: : : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : : writeln; writeln('Result:'+res);
: : : readkey;
: : : end.
: : : [/code]
: : : OKS?
: : :
: : : ****************
: : : Any questions? Just ask!
: : :
: : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : :
: : :
: : :
: : I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
: :
: :thank you gaa,zib too. But how about 'if the input numbers or the result are out of range(greater than or equal to 4000)should display error message '?
:

• : : : : : : : Roman number: I,V,X, L, C, D, M
: : : : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : : : VI=6
: : : : : : : IV=4
: : : : : : : sample output is:
: : : : : : :
: : : : : : : First Roman number?XLV
: : : : : : : Operator?+
: : : : : : : Second Roman number?XVIII
: : : : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : : : :
: : : : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : : : Step 3: link those together.
: : : : : :
: : : : : Hey Zib this is a bit complicated for our lil friend I think.
: : : : : Here's a proc for Dec2Rom:
: : : : : [code]
: : : : : function dec2rom(decimal:word):string;
: : : : : var
: : : : : Ms,Cs,Xs,Is:byte;
: : : : : DPrev,LPrev,VPrev:boolean;
: : : : : idlint:word;
: : : : : br:string;
: : : : : n:byte;
: : : : : begin
: : : : : idlint:=decimal;
: : : : : if (idlint<>0) and (idlint>=1000) then begin
: : : : : Ms:=idlint div 1000;
: : : : : idlint:=idlint mod 1000;
: : : : : end;
: : : : : if (idlint<>0) and (idlint>=100) then begin
: : : : : if idlint>500 then DPrev:=true;
: : : : : Cs:=idlint div 100;
: : : : : idlint:=idlint mod 100;
: : : : : if DPrev then dec(Cs,5);
: : : : : end;
: : : : : if (idlint<>0) and (idlint>=10) then begin
: : : : : if idlint>50 then LPrev:=true;
: : : : : Xs:=idlint div 10;
: : : : : idlint:=idlint mod 10;
: : : : : if LPrev then dec(Xs,5);
: : : : : end;
: : : : : if (idlint<>0) and (idlint>=1) then begin
: : : : : if idlint>5 then VPrev:=true;
: : : : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : : : end;
: : : : : br:='';
: : : : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : : : if DPrev then br:=br+'D';
: : : : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : : : if LPrev then br:=br+'L';
: : : : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : : : if VPrev then br:=br+'V';
: : : : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : : : dec2rom:=br;
: : : : : end;
: : : : : [/code]
: : : : :
: : : : : OKS? This will be the Rom2Dec(the simplest):
: : : : : [code]
: : : : : function Rom2Dec(rom:string):word;
: : : : : var
: : : : : br:word;
: : : : : n:byte;
: : : : : begin
: : : : : br:=0;
: : : : : for n:=1 to length(rom) do begin
: : : : : if rom[n]='M' then inc(br,1000);
: : : : : if rom[n]='D' then inc(br,500);
: : : : : if rom[n]='C' then inc(br,100);
: : : : : if rom[n]='V' then inc(br,50);
: : : : : if rom[n]='X' then inc(br,10);
: : : : : if rom[n]='L' then inc(br,5);
: : : : : if rom[n]='I' then inc(br,1);
: : : : : end;
: : : : : end;
: : : : : [/code]
: : : : : I hope it will work and helps you out.
: : : : :
: : : : : ****************
: : : : : Any questions? Just ask!
: : : : :
: : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : :
: : : : :
: : : : :
: : : : Oh sorry, I have forgotten to write the main body of the program:
: : : : [code]
: : : : uses
: : : : crt;
: : : :
: : : : var
: : : : op:char;
: : : : s1,s2:string;
: : : : res:word;
: : : :
: : : : { converting routines are here }
: : : :
: : : : begin
: : : : p1:=0;
: : : : p2:=0;
: : : : clrscr;
: : : : write('First Roman Number?'); readln(s1);
: : : : write('Operator?'); readln(op);
: : : : write('Second roman number?'); readln(s2);
: : : : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : : : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : : : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : : : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : : : writeln; writeln('Result:'+res);
: : : : readkey;
: : : : end.
: : : : [/code]
: : : : OKS?
: : : :
: : : : ****************
: : : : Any questions? Just ask!
: : : :
: : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : :
: : : :
: : : :
: : : I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
: : :
: : :thank you gaa,zib too. But how about 'if the input numbers or the result are out of range(greater than or equal to 4000)should display error message '?
: :
: THE ROMAN TO DECIMAL PART IS NOT WROK
:

• : : : : : : : : Roman number: I,V,X, L, C, D, M
: : : : : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : : : : VI=6
: : : : : : : : IV=4
: : : : : : : : sample output is:
: : : : : : : :
: : : : : : : : First Roman number?XLV
: : : : : : : : Operator?+
: : : : : : : : Second Roman number?XVIII
: : : : : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : : : : :
: : : : : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : : : : Step 3: link those together.
: : : : : : :
: : : : : : Hey Zib this is a bit complicated for our lil friend I think.
: : : : : : Here's a proc for Dec2Rom:
: : : : : : [code]
: : : : : : function dec2rom(decimal:word):string;
: : : : : : var
: : : : : : Ms,Cs,Xs,Is:byte;
: : : : : : DPrev,LPrev,VPrev:boolean;
: : : : : : idlint:word;
: : : : : : br:string;
: : : : : : n:byte;
: : : : : : begin
: : : : : : idlint:=decimal;
: : : : : : if (idlint<>0) and (idlint>=1000) then begin
: : : : : : Ms:=idlint div 1000;
: : : : : : idlint:=idlint mod 1000;
: : : : : : end;
: : : : : : if (idlint<>0) and (idlint>=100) then begin
: : : : : : if idlint>500 then DPrev:=true;
: : : : : : Cs:=idlint div 100;
: : : : : : idlint:=idlint mod 100;
: : : : : : if DPrev then dec(Cs,5);
: : : : : : end;
: : : : : : if (idlint<>0) and (idlint>=10) then begin
: : : : : : if idlint>50 then LPrev:=true;
: : : : : : Xs:=idlint div 10;
: : : : : : idlint:=idlint mod 10;
: : : : : : if LPrev then dec(Xs,5);
: : : : : : end;
: : : : : : if (idlint<>0) and (idlint>=1) then begin
: : : : : : if idlint>5 then VPrev:=true;
: : : : : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : : : : end;
: : : : : : br:='';
: : : : : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : : : : if DPrev then br:=br+'D';
: : : : : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : : : : if LPrev then br:=br+'L';
: : : : : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : : : : if VPrev then br:=br+'V';
: : : : : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : : : : dec2rom:=br;
: : : : : : end;
: : : : : : [/code]
: : : : : :
: : : : : : OKS? This will be the Rom2Dec(the simplest):
: : : : : : [code]
: : : : : : function Rom2Dec(rom:string):word;
: : : : : : var
: : : : : : br:word;
: : : : : : n:byte;
: : : : : : begin
: : : : : : br:=0;
: : : : : : for n:=1 to length(rom) do begin
: : : : : : if rom[n]='M' then inc(br,1000);
: : : : : : if rom[n]='D' then inc(br,500);
: : : : : : if rom[n]='C' then inc(br,100);
: : : : : : if rom[n]='V' then inc(br,50);
: : : : : : if rom[n]='X' then inc(br,10);
: : : : : : if rom[n]='L' then inc(br,5);
: : : : : : if rom[n]='I' then inc(br,1);
: : : : : : end;
: : : : : : end;
: : : : : : [/code]
: : : : : : I hope it will work and helps you out.
: : : : : :
: : : : : : ****************
: : : : : : Any questions? Just ask!
: : : : : :
: : : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : : :
: : : : : :
: : : : : :
: : : : : Oh sorry, I have forgotten to write the main body of the program:
: : : : : [code]
: : : : : uses
: : : : : crt;
: : : : :
: : : : : var
: : : : : op:char;
: : : : : s1,s2:string;
: : : : : res:word;
: : : : :
: : : : : { converting routines are here }
: : : : :
: : : : : begin
: : : : : p1:=0;
: : : : : p2:=0;
: : : : : clrscr;
: : : : : write('First Roman Number?'); readln(s1);
: : : : : write('Operator?'); readln(op);
: : : : : write('Second roman number?'); readln(s2);
: : : : : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : : : : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : : : : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : : : : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : : : : writeln; writeln('Result:'+res);
: : : : : readkey;
: : : : : end.
: : : : : [/code]
: : : : : OKS?
: : : : :
: : : : : ****************
: : : : : Any questions? Just ask!
: : : : :
: : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : :
: : : : :
: : : : :
: : : : I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
: : : :
: : : :thank you gaa,zib too. But how about 'if the input numbers or the result are out of range(greater than or equal to 4000)should display error message '?
: : :
: : THE ROMAN TO DECIMAL PART IS NOT WROK
: :
I'M SORRY, BUT THE HOLE PROGRAMME IS WRONG,OR YOU CAN TRY YOUSELVES
THE DECIMAL TO WORD IS WRONG ;
JUST THINK FOR YOUR SHARING
:
:

• : : : : : : : : : Roman number: I,V,X, L, C, D, M
: : : : : : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : : : : : VI=6
: : : : : : : : : IV=4
: : : : : : : : : sample output is:
: : : : : : : : :
: : : : : : : : : First Roman number?XLV
: : : : : : : : : Operator?+
: : : : : : : : : Second Roman number?XVIII
: : : : : : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : : : : : :
: : : : : : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : : : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : : : : : Step 3: link those together.
: : : : : : : :
: : : : : : : Hey Zib this is a bit complicated for our lil friend I think.
: : : : : : : Here's a proc for Dec2Rom:
: : : : : : : [code]
: : : : : : : function dec2rom(decimal:word):string;
: : : : : : : var
: : : : : : : Ms,Cs,Xs,Is:byte;
: : : : : : : DPrev,LPrev,VPrev:boolean;
: : : : : : : idlint:word;
: : : : : : : br:string;
: : : : : : : n:byte;
: : : : : : : begin
: : : : : : : idlint:=decimal;
: : : : : : : if (idlint<>0) and (idlint>=1000) then begin
: : : : : : : Ms:=idlint div 1000;
: : : : : : : idlint:=idlint mod 1000;
: : : : : : : end;
: : : : : : : if (idlint<>0) and (idlint>=100) then begin
: : : : : : : if idlint>500 then DPrev:=true;
: : : : : : : Cs:=idlint div 100;
: : : : : : : idlint:=idlint mod 100;
: : : : : : : if DPrev then dec(Cs,5);
: : : : : : : end;
: : : : : : : if (idlint<>0) and (idlint>=10) then begin
: : : : : : : if idlint>50 then LPrev:=true;
: : : : : : : Xs:=idlint div 10;
: : : : : : : idlint:=idlint mod 10;
: : : : : : : if LPrev then dec(Xs,5);
: : : : : : : end;
: : : : : : : if (idlint<>0) and (idlint>=1) then begin
: : : : : : : if idlint>5 then VPrev:=true;
: : : : : : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : : : : : end;
: : : : : : : br:='';
: : : : : : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : : : : : if DPrev then br:=br+'D';
: : : : : : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : : : : : if LPrev then br:=br+'L';
: : : : : : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : : : : : if VPrev then br:=br+'V';
: : : : : : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : : : : : dec2rom:=br;
: : : : : : : end;
: : : : : : : [/code]
: : : : : : :
: : : : : : : OKS? This will be the Rom2Dec(the simplest):
: : : : : : : [code]
: : : : : : : function Rom2Dec(rom:string):word;
: : : : : : : var
: : : : : : : br:word;
: : : : : : : n:byte;
: : : : : : : begin
: : : : : : : br:=0;
: : : : : : : for n:=1 to length(rom) do begin
: : : : : : : if rom[n]='M' then inc(br,1000);
: : : : : : : if rom[n]='D' then inc(br,500);
: : : : : : : if rom[n]='C' then inc(br,100);
: : : : : : : if rom[n]='V' then inc(br,50);
: : : : : : : if rom[n]='X' then inc(br,10);
: : : : : : : if rom[n]='L' then inc(br,5);
: : : : : : : if rom[n]='I' then inc(br,1);
: : : : : : : end;
: : : : : : : end;
: : : : : : : [/code]
: : : : : : : I hope it will work and helps you out.
: : : : : : :
: : : : : : : ****************
: : : : : : : Any questions? Just ask!
: : : : : : :
: : : : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : : : :
: : : : : : :
: : : : : : :
: : : : : : Oh sorry, I have forgotten to write the main body of the program:
: : : : : : [code]
: : : : : : uses
: : : : : : crt;
: : : : : :
: : : : : : var
: : : : : : op:char;
: : : : : : s1,s2:string;
: : : : : : res:word;
: : : : : :
: : : : : : { converting routines are here }
: : : : : :
: : : : : : begin
: : : : : : p1:=0;
: : : : : : p2:=0;
: : : : : : clrscr;
: : : : : : write('First Roman Number?'); readln(s1);
: : : : : : write('Operator?'); readln(op);
: : : : : : write('Second roman number?'); readln(s2);
: : : : : : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : : : : : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : : : : : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : : : : : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : : : : : writeln; writeln('Result:'+res);
: : : : : : readkey;
: : : : : : end.
: : : : : : [/code]
: : : : : : OKS?
: : : : : :
: : : : : : ****************
: : : : : : Any questions? Just ask!
: : : : : :
: : : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : : :
: : : : : :
: : : : : :
: : : : : I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
: : : : :
: : : : :thank you gaa,zib too. But how about 'if the input numbers or the result are out of range(greater than or equal to 4000)should display error message '?
: : : :
: : : THE ROMAN TO DECIMAL PART IS NOT WROK
: : :
: I'M SORRY, BUT THE HOLE PROGRAMME IS WRONG,OR YOU CAN TRY YOUSELVES
: THE DECIMAL TO WORD IS WRONG ;
: JUST THANK FOR YOUR SHARING
: :
: :
:
:

• : : : : : : : : : : Roman number: I,V,X, L, C, D, M
: : : : : : : : : : Decimal number: 1,5,10,50,100,500,1000
: : : : : : : : : : VI=6
: : : : : : : : : : IV=4
: : : : : : : : : : sample output is:
: : : : : : : : : :
: : : : : : : : : : First Roman number?XLV
: : : : : : : : : : Operator?+
: : : : : : : : : : Second Roman number?XVIII
: : : : : : : : : : this is 45 plus 18 and answer is LXIII(63).
: : : : : : : : : :
: : : : : : : : : Step 1: write a roman to decimal converter and a decimal to roman converter
: : : : : : : : : Step 2: write a program, which can calculate the result of a 2 decimals calculation
: : : : : : : : : Step 3: link those together.
: : : : : : : : :
: : : : : : : : Hey Zib this is a bit complicated for our lil friend I think.
: : : : : : : : Here's a proc for Dec2Rom:
: : : : : : : : [code]
: : : : : : : : function dec2rom(decimal:word):string;
: : : : : : : : var
: : : : : : : : Ms,Cs,Xs,Is:byte;
: : : : : : : : DPrev,LPrev,VPrev:boolean;
: : : : : : : : idlint:word;
: : : : : : : : br:string;
: : : : : : : : n:byte;
: : : : : : : : begin
: : : : : : : : idlint:=decimal;
: : : : : : : : if (idlint<>0) and (idlint>=1000) then begin
: : : : : : : : Ms:=idlint div 1000;
: : : : : : : : idlint:=idlint mod 1000;
: : : : : : : : end;
: : : : : : : : if (idlint<>0) and (idlint>=100) then begin
: : : : : : : : if idlint>500 then DPrev:=true;
: : : : : : : : Cs:=idlint div 100;
: : : : : : : : idlint:=idlint mod 100;
: : : : : : : : if DPrev then dec(Cs,5);
: : : : : : : : end;
: : : : : : : : if (idlint<>0) and (idlint>=10) then begin
: : : : : : : : if idlint>50 then LPrev:=true;
: : : : : : : : Xs:=idlint div 10;
: : : : : : : : idlint:=idlint mod 10;
: : : : : : : : if LPrev then dec(Xs,5);
: : : : : : : : end;
: : : : : : : : if (idlint<>0) and (idlint>=1) then begin
: : : : : : : : if idlint>5 then VPrev:=true;
: : : : : : : : if VPrev then Is:=idlint-5 else Is:=idlint;
: : : : : : : : end;
: : : : : : : : br:='';
: : : : : : : : if Ms>0 then for n:=1 to Ms do br:=br+'M';
: : : : : : : : if DPrev then br:=br+'D';
: : : : : : : : if Cs>0 then for n:=1 to Cs do br:=br+'C';
: : : : : : : : if LPrev then br:=br+'L';
: : : : : : : : if Xs>0 then for n:=1 to Xs do br:=br+'X';
: : : : : : : : if VPrev then br:=br+'V';
: : : : : : : : if Is>0 then for n:=1 to Is do br:=br+'I';
: : : : : : : : dec2rom:=br;
: : : : : : : : end;
: : : : : : : : [/code]
: : : : : : : :
: : : : : : : : OKS? This will be the Rom2Dec(the simplest):
: : : : : : : : [code]
: : : : : : : : function Rom2Dec(rom:string):word;
: : : : : : : : var
: : : : : : : : br:word;
: : : : : : : : n:byte;
: : : : : : : : begin
: : : : : : : : br:=0;
: : : : : : : : for n:=1 to length(rom) do begin
: : : : : : : : if rom[n]='M' then inc(br,1000);
: : : : : : : : if rom[n]='D' then inc(br,500);
: : : : : : : : if rom[n]='C' then inc(br,100);
: : : : : : : : if rom[n]='V' then inc(br,50);
: : : : : : : : if rom[n]='X' then inc(br,10);
: : : : : : : : if rom[n]='L' then inc(br,5);
: : : : : : : : if rom[n]='I' then inc(br,1);
: : : : : : : : end;
: : : : : : : : end;
: : : : : : : : [/code]
: : : : : : : : I hope it will work and helps you out.
: : : : : : : :
: : : : : : : : ****************
: : : : : : : : Any questions? Just ask!
: : : : : : : :
: : : : : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : : : : :
: : : : : : : :
: : : : : : : :
: : : : : : : Oh sorry, I have forgotten to write the main body of the program:
: : : : : : : [code]
: : : : : : : uses
: : : : : : : crt;
: : : : : : :
: : : : : : : var
: : : : : : : op:char;
: : : : : : : s1,s2:string;
: : : : : : : res:word;
: : : : : : :
: : : : : : : { converting routines are here }
: : : : : : :
: : : : : : : begin
: : : : : : : p1:=0;
: : : : : : : p2:=0;
: : : : : : : clrscr;
: : : : : : : write('First Roman Number?'); readln(s1);
: : : : : : : write('Operator?'); readln(op);
: : : : : : : write('Second roman number?'); readln(s2);
: : : : : : : if op='+' then res:=rom2dec(s1)+rom2dec(s2);
: : : : : : : if op='/' then res:=rom2dec(s1) div rom2dec(s2);
: : : : : : : if op='*' then res:=rom2dec(s1)*rom2dec(s2);
: : : : : : : if op='-' then res:=rom2dec(s1)-rom2dec(s2);
: : : : : : : writeln; writeln('Result:'+res);
: : : : : : : readkey;
: : : : : : : end.
: : : : : : : [/code]
: : : : : : : OKS?
: : : : : : :
: : : : : : : ****************
: : : : : : : Any questions? Just ask!
: : : : : : :
: : : : : : : :-) [b][blue]GAASHIUS[/blue][/b] :-)
: : : : : : :
: : : : : : :
: : : : : : :
: : : : : : I never make people's homework, because then they'll never learn to program. Programming is something you learn by doing it, and not from reading about it.
: : : : : :
: : : : : :thank you gaa,zib too. But how about 'if the input numbers or the result are out of range(greater than or equal to 4000)should display error message '?
: : : : :
: : : : THE ROMAN TO DECIMAL PART IS NOT WROK
: : : :
: : I'M SORRY, BUT THE HOLE PROGRAMME IS WRONG,OR YOU CAN TRY YOUSELVES
: : THE DECIMAL TO WORD IS WRONG ;
: : JUST THANK FOR YOUR SHARING
: : :
: : :
: :
: :
:
:
Well sorry for this LATE reply - it would stir the messages - but I have to fix my silly things. Who want to use these converting procs need to put these lines after BEGIN.
[code]
...
begin
Ms:=0;
Xs:=0;
Is:=0;
Cs:=0;
Dprev:=false;
Lprev:=false;
Vprev:=false;
idlint:=decimal;
...
[/code]
This will fix the problem - and sorry again.

****************
Any questions? Just ask!

:-) [b][blue]GAASHIUS[/blue][/b] :-)