finding largest, smallest and average

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?

• : 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:

[code][color=Blue]
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[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.
[/color][/code]
• : : 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:
:
: [code]: [color=Blue]
: 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[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.
: [/color][/code]:
:

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

• 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.
[code]
Program MinMax ; [red]{ 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
}[/red]
CONST
N = 10 ;

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

begin
[red]{
input phase
}[/red]
for i := 1 to N do begin
Write ('Enter number ', i:0) ;
end ;
[red]{
compute phase
}[/red]
Min := x[1] ;
Max := x[1] ;
[red]{
Min and Max must be initialized to something reasonable,
any value in the array will do. Note that 0.0 will not do.
}[/red]
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 ; [red]{ N should get "promoted" to a Real }
{
output phase -- output will be in scientific notation
}[/red]
WriteLn ('Largest number entered is ', Max) ;
WtiteLn ('Smallest number entered is ', Min) ;
WriteLn ('Average is ', Avg
end.
[/code]