Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

about my source code?

Posted on 1998-10-28
11
Medium Priority
?
244 Views
Last Modified: 2010-04-16
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;


function UserAnswer:boolean;
begin
  readln(ans);
  if (pos('N',ans)=0) and (pos('n',ans)=0) then UserAnswer:=true
  else UserAnswer:=false;
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
  write('Enter 1st number : ');readln(n1);
  write('Enter 2nd number : ');readln(n2);
  write('Enter 3rd number : ');readln(n3);
  write('Enter 4th number : ');readln(n4);
  write('Enter 5th number : ');readln(n5);
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 ? ');
    GetUserChoice:=readkey;
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 ? ');
    if UserAnswer then begin
      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 ? ');
  until not UserAnswer;
End.

0
Comment
Question by:lewis_loo
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
  • 2
  • +5
11 Comments
 
LVL 7

Expert Comment

by:Inteqam
ID: 1215873
I understood the code , but i didn't understand what you want , can you explain more?

0
 
LVL 1

Expert Comment

by:saam
ID: 1215874
i don't understand your question..
but i can give you a tip about your function UserAnswer

UserAnswer := (pos('N',ans)=0) and (pos('n',ans)=0)

/saam
0
 
LVL 3

Expert Comment

by:elfie
ID: 1215875
home work assignment?
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
LVL 4

Expert Comment

by:davidmwilliams
ID: 1215876
 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

by:flobecker
ID: 1215877
You're right!
Only teachers can imagine such *%&$# questions. REAL coders use arrays!

0
 

Expert Comment

by:flobecker
ID: 1215878
You're right!
Only teachers can imagine such *%&$# questions. REAL coders use arrays!

0
 
LVL 7

Expert Comment

by:Inteqam
ID: 1215879
lewis_loo :
 are you there?

0
 
LVL 1

Author Comment

by:lewis_loo
ID: 1215880
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

by:lewis_loo
ID: 1215881
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

by:vikiing
ID: 1215882
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

by:
daitt earned 0 total points
ID: 1215883
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 ? ');
      until not UserAnswer;
    End.

Then the user can simply enter other number in order to quit this set of numbers.
And ofcourse, the comment of saam (about UserAnswer) is worth seeing.
Good luck.
daitt
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Instead of error trapping or hard-coding for non-updateable fields when using QODBC, let VBA automatically disable them when forms open. This way, users can view but not change the data. Part 1 explained how to use schema tables to do this. Part 2 h…
By default Outlook 2016 displays only one time zone in the Calendar. The following article explains how to display two time zones in one calendar view.
In this video, Percona Director of Solution Engineering Jon Tobin discusses the function and features of Percona Server for MongoDB. How Percona can help Percona can help you determine if Percona Server for MongoDB is the right solution for …
In response to a need for security and privacy, and to continue fostering an environment members can turn to for support, solutions, and education, Experts Exchange has created anonymous question capabilities. This new feature is available to our Pr…

670 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question