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 Programmer's 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 its 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

killhhakillhha 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?

Comments

  • AtexAtex 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,' : ');
    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.
    [/color][/code]
  • killhhakillhha 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,' : ');
    : 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.
    : [/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 :)

  • ActorActor 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) ;
    ReadLn (x[i])
    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]
Sign In or Register to comment.