Исправить ошибки в программе о читателях - Turbo Pascal

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

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

Решение задачи: «Исправить ошибки в программе о читателях»

textual
Листинг программы
program biblioteka1;
const
n = 5;
type
  tStr=string[20];
  tData=record
    d,m,y:integer;
    end;
  tUser=record
    Fam:tStr;
    DatZ,DatV:tData;
    end;
var
  i,j:integer;
  d:array[1..n] of tUser;
  e:array[1..n] of integer;
procedure readData(var a:tData);
  var
    b:string;
  begin
    readln(b);
    a.d:=(ord(b[1])-ord('0'))*10+ord(b[2])-ord('0');
    a.m:=(ord(b[4])-ord('0'))*10+ord(b[5])-ord('0');
    a.y:=(ord(b[7])-ord('0'))*10+ord(b[8])-ord('0');
  end;
begin
  writeln('Заполните данные о читателях: ');
  for j:=1 to n do
    begin
      write('Фамилия: ');
      readln(d[j].Fam);
      write('Дата заказа(дд.мм.гг): ');
      readData(d[j].DatZ);
      write('Дата выдачи(дд.мм.гг): ');
      readData(d[j].DatV);
    end;
  {}
  writeln('самый маленький срок, за который нашли книгу');
  for j:=1 to n do
    begin
     e[j]:=d[j].DatV.y-d[j].DatZ.y;
     if d[j].DatV.m<d[j].DatZ.m then e[j]:= e[j]+30*12;
     e[j]:=e[j]+d[j].DatV.y-d[j].DatZ.y;
     if d[j].DatV.d<d[j].DatZ.d then e[j]:= e[j]+30;
     e[j]:=e[j]+d[j].DatV.d-d[j].DatZ.d
    end;
  i:=1;
  for j:=2 to n do
    if e[i]>e[j]then i:=j;
  writeln('Result:',e[i],'days');
  {}
  writeln('сколько заказов было не удовлетворено');
  i:=0;
  for j:=1 to n do
    if d[j].DatV.d=0 then inc(i);
  writeln('Result:',i,' ');
  {}
  writeln(' Кто чаще всего берет книги: ');
  for i:=1 to n do
    e[i]:=0;
  for j:=1 to n-1 do
    for i:=j+1 to n do
      if(d[j].Fam=d[i].Fam) then
        begin
          inc(e[j]);
          e[i]:=-n
        end;
  i:=1;
  for j:=2 to n do
    if e[i]<e[j] then i:=j;
  writeln(d[i].Fam);
  writeln;
  {}
  writeln('Кому выдали книги 15.09.13: ');
  for j:=1 to n do
    if(d[j].DatZ.d=15)and(d[j].DatZ.m=9)and(d[j].DatZ.d=13)then
      write(d[j].Fam, ' ');
  writeln;
  {}
  writeln(' Cколько человек заказывали книги 25.04.13: ');
  i:=0;
  for j:=1 to n do
    if(d[j].DatZ.d=25)and(d[j].DatZ.m=4)and(d[j].DatZ.d=13)then inc(i);
    { write(d[j].Fam, ' ');}
  writeln('Result:',i);
end.

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

program biblioteka1; const n = 5; type tStr=string[20]; tData=record d,m,y:integer; end; tUser=record Fam:tStr; DatZ,DatV:tData; end; var i,j:integer; d:array[1..n] of tUser; e:array[1..n] of integer; procedure readData(var a:tData); var b:string; begin readln(b); a.d:=(ord(b[1])-ord('0'))10+ord(b[2])-ord('0'); a.m:=(ord(b[4])-ord('0'))10+ord(b[5])-ord('0'); a.y:=(ord(b[7])-ord('0'))10+ord(b[8])-ord('0'); end; begin writeln('Заполните данные о читателях: '); for j:=1 to n do begin write('Фамилия: '); readln(d[j].Fam); write('Дата заказа(дд.мм.гг): '); readData(d[j].DatZ); write('Дата выдачи(дд.мм.гг): '); readData(d[j].DatV); end; {} writeln('самый маленький срок, за который нашли книгу'); for j:=1 to n do begin e[j]:=d[j].DatV.y-d[j].DatZ.y; if d[j].DatV.m<d[j].DatZ.m then e[j]:= e[j]+3012; e[j]:=e[j]+d[j].DatV.y-d[j].DatZ.y; if d[j].DatV.d<d[j].DatZ.d then e[j]:= e[j]+30; e[j]:=e[j]+d[j].DatV.d-d[j].DatZ.d end; i:=1; for j:=2 to n do if e[i]>e[j]then i:=j; writeln('Result:',e[i],'days'); {} writeln('сколько заказов было не удовлетворено'); i:=0; for j:=1 to n do if d[j].DatV.d=0 then inc(i); writeln('Result:',i,' '); {} writeln(' Кто чаще всего берет книги: '); for i:=1 to n do e[i]:=0; for j:=1 to n-1 do for i:=j+1 to n do if(d[j].Fam=d[i].Fam) then begin inc(e[j]); e[i]:=-n end; i:=1; for j:=2 to n do if e[i]<e[j] then i:=j; writeln(d[i].Fam); writeln; {} writeln('Кому выдали книги 15.09.13: '); for j:=1 to n do if(d[j].DatZ.d=15)and(d[j].DatZ.m=9)and(d[j].DatZ.d=13)then write(d[j].Fam, ' '); writeln; {} writeln(' Cколько человек заказывали книги 25.04.13: '); i:=0; for j:=1 to n do if(d[j].DatZ.d=25)and(d[j].DatZ.m=4)and(d[j].DatZ.d=13)then inc(i); write(d[j].Fam, ' '); writeln('Result:',i); end.

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


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

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

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