Solved

Posted on 1998-10-28
233 Views
Can you make this source code into 5 procedures and 1 function into an arrangement order?
this source code is to arrange an input into an ascending order or descending order.

uses crt;
var n1,n2,n3,n4,n5 : real;
ans:string;
opt:char;

procedure ascending(var a1,a2,a3,a4,a5 :real); forward;
procedure descending(var d1,d2,d3,d4,d5 : real); forward;

Procedure Choice;
begin
write(opt);
writeln;
case opt of
'1' : begin
ascending(n1,n2,n3,n4,n5);
writeln(n1:8:2,n2:8:2,n3:8:2,n4:8:2,n5:8:2);
end;
'2' : begin
descending(n1,n2,n3,n4,n5);
writeln(n1:8:2,n2:8:2,n3:8:2,n4:8:2,n5:8:2);
end;
end;
end;

begin
if (pos('N',ans)=0) and (pos('n',ans)=0) then UserAnswer:=true
end;

procedure order(asc:boolean; var x,y:real);
var temp: real;
begin
if asc then begin
if x>y then begin
temp:=x;
x:=y;
y:=temp;
end
end
else if not asc then begin
if x<y then begin
temp:=y;
y:=x;
x:=temp;
end;
end;
end;

procedure input(var n1,n2,n3,n4,n5:real);
begin
end;

procedure ascending(var a1,a2,a3,a4,a5 :real);
begin
order(true,n1,n2);
order(true,n1,n3);
order(true,n1,n4);
order(true,n1,n5);
order(true,n2,n3);
order(true,n2,n4);
order(true,n2,n5);
order(true,n3,n4);
order(true,n3,n5);
order(true,n4,n5);
end;

Procedure descending(var d1,d2,d3,d4,d5:real);
begin
order(false,n1,n2);
order(false,n1,n3);
order(false,n1,n4);
order(false,n1,n5);
order(false,n2,n3);
order(false,n2,n4);
order(false,n2,n5);
order(false,n3,n4);
order(false,n3,n5);
order(false,n4,n5);
end;

Function GetUserChoice:char;
begin
writeln('Press `1` for ascending order or `2` for decending order');
write('What order would you like the numbers to appear ? ');
end;

begin
repeat
clrscr;
input(n1,n2,n3,n4,n5);
repeat
opt:=GetUserChoice;
choice;
until (opt in ['1','2']);
write('Would you like to view the Descending order ? ');
descending(n1,n2,n3,n4,n5);
writeln(n1:8:2,n2:8:2,n3:8:2,n4:8:2,n5:8:2);
end;
writeln;
write('Continue ? ');
End.

0
Question by:lewis_loo
• 2
• 2
• 2
• +5

LVL 7

Expert Comment

I understood the code , but i didn't understand what you want , can you explain more?

0

LVL 1

Expert Comment

/saam
0

LVL 3

Expert Comment

home work assignment?
0

LVL 4

Expert Comment

This is clearly a homework question -- and you're asking us to do too much to bother, for 5 points.
Here's a hint ... use an array to avoid so much repetition
0

Expert Comment

You're right!
Only teachers can imagine such *%&\$# questions. REAL coders use arrays!

0

Expert Comment

You're right!
Only teachers can imagine such *%&\$# questions. REAL coders use arrays!

0

LVL 7

Expert Comment

lewis_loo :
are you there?

0

LVL 1

Author Comment

yeah, Of course it's an assignment but I want to have some knowledge from you all. This source code is already finished, I want you all to build in a complex, difficult and a shortcut to arrange my source code, so I can learn more in Pascal. The program suppose not to use an array and I want to know how to sort it within a short program, If you all have any idea, Please send to me, of course I will learn more from you than my teacher.

0

LVL 1

Author Comment

yeah, Of course it's an assignment but I want to have some knowledge from you all. This source code is already finished, I want you all to build in a complex, difficult and a shortcut to arrange my source code, so I can learn more in Pascal. The program suppose not to use an array and I want to know how to sort it within a short program, If you all have any idea, Please send to me, of course I will learn more from you than my teacher.

0

LVL 3

Expert Comment

You're saying "I want you all to build in a complex, difficult and a shortcut to arrange my source code, so I can learn more in Pascal". The fact of doing things more complicated and difficult will really *NOT* help to learn Pascal, nor any other programming language (to be true, nor any other thing in your life).
0

LVL 3

Accepted Solution

daitt earned 0 total points
That's good procedures (ofcourse if we don't use arrays). There's not much change I can make:

procedure order(asc:boolean; var x,y:real);
var temp: real;
begin
if (asc xor (x<y)) then begin
temp:=x;
x:=y;
y:=temp;
end
end;

You don't need the forward procedures. Just simply move order, ascending, descending procedures above others.
And your interface confuses me. What do you really want? You want to let the users sort once (ascending or descending), then ask them if they want to sort descending (maybe descending sorting is much more important than ascending one??). Perhaps:

begin
repeat
clrscr;
input(n1,n2,n3,n4,n5);
repeat
opt:=GetUserChoice;
choice;
until not (opt in ['1','2']);
write('Continue ? ');
End.

Then the user can simply enter other number in order to quit this set of numbers.
Good luck.
daitt
0

## Featured Post

### Suggested Solutions

Marketing can be an uncomfortable undertaking, especially if your material is technology based. Luckily, we’ve compiled some simple and (relatively) painless tips to put an end to your trepidation and start your path to success.
HOW TO: Upload an ISO image to a VMware datastore for use with VMware vSphere Hypervisor 6.5 (ESXi 6.5) using the vSphere Host Client, and checking its MD5 checksum signature is correct.  It's a good idea to compare checksums, because many installat…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…