Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ задача по записям

Автор: elvis 5.05.2004 0:45

пробывал решить задачу, не получилось, мож кто нашел ошибку.
Имеются экзаменационные ведомости трех групп по Физике.
Разработать алг. и программу определения сколько человек в каждой группе
получили на экзамене оценку 5 , сколько-4 , сколько-3 . Упорядочить
результаты по числу 5.
Указания: 1) решить с использованием процедур и функций.
2) в решении использовать тип данных ЗАПИСЬ с полями:
- порядковый номер,
- Ф.И.О. ,
- экзаменационная оценка.



Код
program ocenki_po_fizike;
uses crt;
type student=record
    nomer:integer;
    fio:string;
    ocenka:integer;
    end;
sp=array[1..50] of student;
 var spisok:sp;
 k,ng:integer;
procedure Vvod(c:integer);
var   i:integer;
begin
WriteLn('Введите ФИО студентов и балл');
for i:=1 to c do begin
     Write(i,')');
     Spisok[i].Nomer:=i;
     ReadLn(Spisok[i].FIO,Spisok[i].ocenka);
     end;
end;
 procedure obrab(c:integer);
var pyat,chet,tri:integer;
 begin
  pyat:=0;
  chet:=0;
  tri:=0;
with student do begin
  for nomer:=1 to c do begin
   case ocenka of
 5:pyat:=pyat+1;
 4:chet:=chet+1;
 3:tri:=tri+1;
   end;
  end;
writeln('Студентов получивших оценку:');
writeln('"5"-,pyat:5:0);
writeln('"4"-,chet:5:0);
writeln('"3"-,tri:5:0);
end;
Begin
  ClrScr;
  WriteLn('Программа для определения количества студентов получивших оценку');
  WriteLn('Введите кол-во студентов в 1 группе');
  ReadLn(c);
  Vvod(c);
  obrab(c);
WriteLn('Введите кол-во студентов во 2 группе');
  ReadLn(c);
  Vvod(c);
  obrab(c);
WriteLn('Введите кол-во студентов в 3 группе');
  ReadLn(c);
  Vvod(c);
  obrab(c);
 
 
End.

Автор: BlackShadow 5.05.2004 17:49

Ты Pascal хоть раз запускал???

Код

Type
 TStudent=Record
   FIO:String;
   Mark:Integer
 End;

Var
 Data:Array[1.50] Of TStudent;
 i,n:Integer;

Const
 TotalMarks:Array[3..5] Of Integer = (0,0,0);

Procedure Input;
Begin
 Write('Enter Amount Of Students: ');
 ReadLn(n);
 For i:=1 To n Do
 Begin
   Write(i,'). Name: ');
   ReadLn(Data[i].FIO);
   Write('   Mark: ');
   ReadLn(Data[i].Mark)
 End
End;

Procedure Process;
Begin
 For i:=1 To n Do
   Inc(TotalMarks[Data[i].Mark])
End;

Procedure OutPut;
Begin
 WriteLn('Total:");
 For i:=5 DownTo 3 Do
   WriteLn(i,' - ',TotalMarks[i])
End;

Begin
 Input;
 Process;
 OutPut
End.


А фраза
Цитата
with student do begin
  for nomer:=1 to c do begin
   case ocenka of

Меня вообще добила.