#### 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.

# finding largest, smallest and average

Posts: 9Member
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?
· ·

• Posts: 268Member
: 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]
· ·
• Posts: 9Member
: : 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 :)

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