Pascal

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

This Forum Only
Post New Thread
Single Post View       Linear View       Threaded View      f

Report
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?
Report
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,' : ');
  readln(number[i]);
 end;
 sort_numbers;
 write_min_max;
 calculate_average;
 asm xor ax,ax;int 16h;end;       {waits for a keypress to exit}
end.

Report
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,' : ');
:   readln(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 :)

Report
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) ;
		ReadLn (x[i])
	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
© Copyright 2011 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Operated by CommunityHeaven, a BootstrapLabs company.