problem on the main program - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

problem on the main program

rrwerrwe Posts: 7Member
the following cannot be ran as the sample output shown :
F: (0)
E:** (2)
D:****** (6)
C:*********(9)
B:**** (4)
A:**(2)

how can solved this problem?
many thanks to you guys


[code]
program barchart;
var
count : array ['A'..'F'] of integer;
mark : array [1..15] of integer;
i: integer;
ch: char;

procedure countgrade;
var
ch : char;
i : integer;
begin
for ch := 'A' to 'F' do
count[ch] := 0;
for i := 1 to 15 do
case mark[i] of
0..50 : count['F'] := count['F'] + 1;
51..60 : count['E'] := count['E'] + 1;
61..70 : count['D'] := count['D'] + 1;
71..80 : count['C'] := count['C'] + 1;
81..90 : count['B'] := count['B'] + 1;
91..100 : count['A'] := count['A'] + 1;
end
end;

procedure plotchart;
var
ch : char;
i : integer;
begin
for ch := 'F' to 'A' do
begin
write(ch, ':');
for i := 1 to count[ch] do
write('*');
writeln('(', count[ch], ')')
end
end;

begin
for i:=1 to 15 do
begin
write('Enter test mark for student ',i,': ' );
readln(mark[i]);
end;

countgrade;
plotchart;
readln
end.[/code]

Comments

  • ActorActor Posts: 438Member
    How many students can the program accommodate? How many marks?

    Look at the loop in procedure plotchart; how does it terminate?

    : [code]:
    : program barchart;
    : var
    : count : array ['A'..'F'] of integer;
    : mark : array [1..15] of integer;
    : i: integer;
    : ch: char;
    :
    : procedure countgrade;
    : var
    : ch : char;
    : i : integer;
    : begin
    : for ch := 'A' to 'F' do
    : count[ch] := 0;
    : for i := 1 to 15 do
    : case mark[i] of
    : 0..50 : count['F'] := count['F'] + 1;
    : 51..60 : count['E'] := count['E'] + 1;
    : 61..70 : count['D'] := count['D'] + 1;
    : 71..80 : count['C'] := count['C'] + 1;
    : 81..90 : count['B'] := count['B'] + 1;
    : 91..100 : count['A'] := count['A'] + 1;
    : end
    : end;
    :
    : procedure plotchart;
    : var
    : ch : char;
    : i : integer;
    : begin
    : for ch := 'F' to 'A' do [red]{ how does this loop terminate? }[/red]
    : begin
    : write(ch, ':');
    : for i := 1 to count[ch] do
    : write('*');
    : writeln('(', count[ch], ')')
    : end
    : end;
    :
    : begin
    : for i:=1 to 15 do
    : begin
    : write('Enter test mark for student ',i,': ' );
    : readln(mark[i]);
    : end;
    :
    : countgrade;
    : plotchart;
    : readln
    : end.[/code]:

Sign In or Register to comment.