Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmers Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use it's exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Posts: 10Member
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).
· ·

• Posts: 6,349Member
: 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
· ·
• Posts: 349Member
: : 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.

****************

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

· ·
• Posts: 349Member
: : : 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.
:
: ****************
:
: :-) [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;
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?

****************

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

· ·
• Posts: 6,349Member
: : : : 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;
: 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?
:
: ****************
:
: :-) [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.
· ·
• Posts: 10Member
: : : : : 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.
:
:thank you gaa,zib too
· ·
• Posts: 10Member
: : : : : : 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.
: :
: :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 '?
:

· ·
• Posts: 10Member
: : : : : : : 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. 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
:

· ·
• Posts: 10Member
: : : : : : : : 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 ;
:
:

· ·
• Posts: 10Member
: : : : : : : : : 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
: :
: :
:
:

· ·
• Posts: 349Member
: : : : : : : : : : 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.

****************