## Pascal

Moderators: None (Apply to moderate this forum)
Number of posts: 14016

This Forum Only

finding largest, smallest and average Posted by killhha on 1 Dec 2008 at 4:21 PM
ok so im trying to write a simple program that does the following:

1) asks user to enter in 10 numbers (i can do this with array)
2) find the largest number entered and display it
3) find smallest number and display it
4) find average and display it

i am a total noob at pascal and programming. i was close to figuring out average but i couldnt manage. and i have no idea how to display the largest and smallest. could you guys help me?
Re: finding largest, smallest and average Posted by Atex on 1 Dec 2008 at 10:50 PM
: ok so im trying to write a simple program that does the following:
:
: 1) asks user to enter in 10 numbers (i can do this with array)
: 2) find the largest number entered and display it
: 3) find smallest number and display it
: 4) find average and display it
:
: i am a total noob at pascal and programming. i was close to figuring
: out average but i couldnt manage. and i have no idea how to display
: the largest and smallest. could you guys help me?
:

Hi, this will help to solve your problem:

```
program average;

const max_number=10;    {change this for array size}
var number:array[1..max_number+1] of integer;  {can be byte,word,real...etc.}
i:byte;

procedure sort_numbers;  {simple bubble sort algorythm}
var j:byte;             {can be slow for large arrays, but easy to implement}
begin
for j:=max_number downto 2 do
for i:=1 to j do
if number[j]<number[i] then begin
number[max_number+1]:=number[j];
number[j]:=number[i];
number[i]:=number[max_number+1];
end;
end;

procedure write_min_max; {because it's sorted is easy to see min. and max. }
begin
writeln(#13#10,'Minimum > ',number[1]); {#13#10 moves the cursor down a line}
writeln('Maximum > ',number[max_number]);
end;

procedure calculate_average;
begin
number[max_number+1]:=0;
for i:=1 to max_number do
inc(number[max_number+1],number[i]);
writeln('Average > ',number[max_number+1]/max_number:6:4);
{ :6:4 formats the result to "xxxxxx.xxxx" instead of "x.xxxx...E+xxxx" }
end;

begin
writeln;                         {move cursor down 1 line}
for i:=1 to max_number do begin  {enter data}
write('Enter number ',i,' : ');
end;
sort_numbers;
write_min_max;
calculate_average;
asm xor ax,ax;int 16h;end;       {waits for a keypress to exit}
end.
```

Re: finding largest, smallest and average Posted by killhha on 2 Dec 2008 at 3:30 AM
: : ok so im trying to write a simple program that does the following:
: :
: : 1) asks user to enter in 10 numbers (i can do this with array)
: : 2) find the largest number entered and display it
: : 3) find smallest number and display it
: : 4) find average and display it
: :
: : i am a total noob at pascal and programming. i was close to figuring
: : out average but i couldnt manage. and i have no idea how to display
: : the largest and smallest. could you guys help me?
: :
:
: Hi, this will help to solve your problem:
:
:
```:
: program average;
:
: const max_number=10;    {change this for array size}
: var number:array[1..max_number+1] of integer;  {can be byte,word,real...etc.}
:     i:byte;
:
:
: procedure sort_numbers;  {simple bubble sort algorythm}
:  var j:byte;             {can be slow for large arrays, but easy to implement}
:  begin
:   for j:=max_number downto 2 do
:    for i:=1 to j do
:     if number[j]<number[i] then begin
:      number[max_number+1]:=number[j];
:      number[j]:=number[i];
:      number[i]:=number[max_number+1];
:     end;
:  end;
:
: procedure write_min_max; {because it's sorted is easy to see min. and max. }
:  begin
:   writeln(#13#10,'Minimum > ',number[1]); {#13#10 moves the cursor down a line}
:   writeln('Maximum > ',number[max_number]);
:  end;
:
: procedure calculate_average;
:  begin
:   number[max_number+1]:=0;
:   for i:=1 to max_number do
:    inc(number[max_number+1],number[i]);
:   writeln('Average > ',number[max_number+1]/max_number:6:4);
:  { :6:4 formats the result to "xxxxxx.xxxx" instead of "x.xxxx...E+xxxx" }
:  end;
:
:
:
: begin
:  writeln;                         {move cursor down 1 line}
:  for i:=1 to max_number do begin  {enter data}
:   write('Enter number ',i,' : ');
:  end;
:  sort_numbers;
:  write_min_max;
:  calculate_average;
:  asm xor ax,ax;int 16h;end;       {waits for a keypress to exit}
: end.
: ```
:
:

wow! thanks! works great! exept for the end where it says "asm xor ax,ax;int 16h;end;" it said that the compile failed so i just changed to readln no biggy. i also learnt about the 6:4 thing. that helped alot! thanks :)

Re: finding largest, smallest and average Posted by Actor on 2 Dec 2008 at 8:40 AM
Much too complex. Sorting an array just to find the maximum and minimum is overkill, particularly if the program is later modified to handle a much larger array. And the averaging problem is delayed unnecessarily.

It can all be done in a single pass instead of the N-1 passes of a bubble sort.
```Program MinMax ;  { less than 30 non-comment coded lines }
{
: 1) asks user to enter in 10 numbers (i can do this with array)
: 2) find the largest number entered and display it
: 3) find smallest number and display it
: 4) find average and display it
}
CONST
N = 10 ;

Var
i : Byte ;
x : Array [1 .. N] of Real ;
Min,
Max,
Sum,
Avg : Real ;

begin
{
input phase
}
for i := 1 to N do begin
Write ('Enter number ', i:0) ;
end ;
{
compute phase
}
Min := x[1] ;
Max := x[1] ;
{
Min and Max must be initialized to something reasonable,
any value in the array will do.  Note that 0.0 will not do.
}
Sum := 0.0 ;
for i := 1 to N do begin
Sum := Sum + x[i] ;
if x[i] < Min then  { will not happen when i = 1. That's OK }
Min := x[i] ;
if x[i] > Max then
Max := x[i]
end ;
Avg := Sum / N ;  { N should get "promoted" to a Real }
{
output phase -- output will be in scientific notation
}
WriteLn ('Largest number entered is ', Max) ;
WtiteLn ('Smallest number entered is ', Min) ;
WriteLn ('Average is ', Avg
end.
```

## Recent Jobs

Official Programmer's Heaven Blogs
Web Hosting | Browser and Social Games | Gadgets

Popular resources on Programmersheaven.com
Assembly | Basic | C | C# | C++ | Delphi | Flash | Java | JavaScript | Pascal | Perl | PHP | Python | Ruby | Visual Basic