Определить среди всех школьников самого неуспевающего - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Помогите написать программу на Pascal ABC. Вот само задание: Файл содержит сведения об успеваемости школьников: фамилия, имя, класс, оценка по истории, математике и физике. Выведите сведения об учениках задаваемого класса и определите средний бал каждого. Определите среди всех школьников самого неуспевающего. Примечание: Файл с исходными данными необходимо подготовить в текстовом редакторе. Имя файла может быть любым. Сведения, относящиеся к одному объекту, необходимо записывать в одной строке файла. Результаты работы программы должны быть выведены и на экран, и в текстовый файл. Желательно не использовать массивы. Заранее спасибо.

Решение задачи: «Определить среди всех школьников самого неуспевающего»

textual
Листинг программы
uses crt;
type uchen=record
            fam,name:string[10];
            klass:string[3];
            ist,mat,fiz:integer
           end;
var a:uchen;
    f,f1:text;
    fname,s,dv:string;
    kl:string[3];
    kdv:integer;sr:real;
function koldv(dv:uchen):byte;
var k:byte;
begin
 k:=0;
 with dv do
  begin
   if ist=2 then inc(k);
   if mat=2 then inc(k);
   if fiz=2 then inc(k)
  end;
 koldv:=k
end;
begin
    clrscr;
    write('введите имя файла: ');readln(fname);
    assign(f,fname);reset(f);
    assign(f1,'output.txt');rewrite(f1);
    write('класс: ');readln(kl);
    clrscr;
    writeln('оценки учеников ',kl,' класса');
    writeln(f1,'оценки учеников ',kl,' класса');
    writeln('+----------+----------+-------+-------+-------+-------+');
    writeln(f1,'+----------+----------+-------+-------+-------+-------+');
    writeln('| фамилия  |    имя   |история|математ| физика|средняя|');
    writeln(f1,'| фамилия  |    имя   |история|математ| физика|средняя|');
    writeln('+----------+----------+-------+-------+-------+-------+');
    writeln(f1,'+----------+----------+-------+-------+-------+-------+');
    kdv:=0;
    while not eof(f) do
     begin
      readln(f,s);
      with a do
       begin
        fam:=copy(s,1,pos(',',s)-1);delete(s,1,pos(',',s)+1);
        name:=copy(s,1,pos(',',s)-1);delete(s,1,pos(',',s)+1);
        klass:=copy(s,1,pos(',',s)-1);delete(s,1,pos(',',s)+1);
        ist:=ord(s[1])-48;delete(s,1,3);
        mat:=ord(s[1])-48;delete(s,1,3);
        fiz:=ord(s[1])-48;
        sr:=(ist+mat+fiz)/3;
        if koldv(a)>kdv then begin dv:=a.fam+' '+a.name;kdv:=koldv(a) end
                  else
                   if koldv(a)=kdv then dv:=dv+', '+a.fam+' '+a.name;
        if kl=klass
         then
          begin
           writeln('|',fam:10,'|',name:10,'|',ist:7,'|',mat:7,'|',fiz:7,'|',sr:7:2,'|');
           writeln(f1,'|',fam:10,'|',name:10,'|',ist:7,'|',mat:7,'|',fiz:7,'|',sr:7:2,'|')
          end
       end
     end;
    writeln('+----------+----------+-------+-------+-------+-------+');
    writeln(f1,'+----------+----------+-------+-------+-------+-------+');
    if kdv=0 then begin writeln('неуспевающих нет');writeln(f1,'неуспевающих нет') end
             else begin
                   writeln('неуспевающие по ',kdv,' предметам: ',dv);
                   writeln(f1,'неуспевающие по ',kdv,' предметам: ',dv)
                  end;
    writeln('результаты работы программы в файле output.txt');
    close(f);close(f1)
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные и структуры данных, необходимые для выполнения программы.
  2. Затем происходит чтение имени файла от пользователя.
  3. Далее открываются два файла: один для записи результатов работы программы (f), другой - для вывода результатов (f1).
  4. В цикле while происходит чтение данных из файла f. Для каждого введенного имени класса выполняется следующие действия:
    • Имя класса (kl) сравнивается с именем класса, указанным в переменной kdv.
    • Если имена классов совпадают, то выводится информация об учениках этого класса, включая их фамилию, имя, оценки по истории, математике и физике.
    • Если есть неуспевающие ученики, то выводится информация о них, включая их фамилию и имя, а также среднюю оценку.
  5. После завершения цикла while выводится общая информация о результатах работы программы.
  6. Наконец, закрываются файлы f и f1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы