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

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

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

Листинг программы
  1. program biblioteka1;
  2. const
  3. n = 5;
  4. type
  5. Date=record
  6. Fam: string[20];
  7. DatZ :boolean;
  8. DatV:integer;
  9. end;
  10. var j:integer;
  11. d: array[1..5] of date;
  12. begin
  13. writeln('Заполните данные о читателях: ');
  14. for j:=1 to n do
  15. begin
  16. writeln('Фамилия: ');
  17. readln(d[j].Fam);
  18. writeln('Дата заказа(дд.мм.гг): ');
  19. readln(d[j].DatZ);
  20. writeln('Дата выдачи(дд.мм.гг): ');
  21. readln(d[j].DatV);
  22. end;
  23. writeln(' Кто чаще всего берет книги: ');
  24. for j:=1 to n do
  25. if (d[j].DatV ) then write(d[j].Fam, ' ');
  26. writeln;
  27. writeln('Кому выдали книги 15.09.13: ');
  28. for j:=1 to n do
  29. if (d[j].DatV) then write(d[j].Fam, ' ');
  30. writeln;
  31. writeln(' Cколько человек заказывали книги 25.04.13: ');
  32. for j:=1 to n do
  33. if (d[j].DatZ ) then write(d[j].Fam, ' ');
  34. writeln;
  35. end.

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

textual
Листинг программы
  1. program biblioteka1;
  2. const
  3. n = 5;
  4. type
  5.   tStr=string[20];
  6.   tData=record
  7.     d,m,y:integer;
  8.     end;
  9.   tUser=record
  10.     Fam:tStr;
  11.     DatZ,DatV:tData;
  12.     end;
  13. var
  14.   i,j:integer;
  15.   d:array[1..n] of tUser;
  16.   e:array[1..n] of integer;
  17. procedure readData(var a:tData);
  18.   var
  19.     b:string;
  20.   begin
  21.     readln(b);
  22.     a.d:=(ord(b[1])-ord('0'))*10+ord(b[2])-ord('0');
  23.     a.m:=(ord(b[4])-ord('0'))*10+ord(b[5])-ord('0');
  24.     a.y:=(ord(b[7])-ord('0'))*10+ord(b[8])-ord('0');
  25.   end;
  26. begin
  27.   writeln('Заполните данные о читателях: ');
  28.   for j:=1 to n do
  29.     begin
  30.       write('Фамилия: ');
  31.       readln(d[j].Fam);
  32.       write('Дата заказа(дд.мм.гг): ');
  33.       readData(d[j].DatZ);
  34.       write('Дата выдачи(дд.мм.гг): ');
  35.       readData(d[j].DatV);
  36.     end;
  37.   {}
  38.   writeln('самый маленький срок, за который нашли книгу');
  39.   for j:=1 to n do
  40.     begin
  41.      e[j]:=d[j].DatV.y-d[j].DatZ.y;
  42.      if d[j].DatV.m<d[j].DatZ.m then e[j]:= e[j]+30*12;
  43.      e[j]:=e[j]+d[j].DatV.y-d[j].DatZ.y;
  44.      if d[j].DatV.d<d[j].DatZ.d then e[j]:= e[j]+30;
  45.      e[j]:=e[j]+d[j].DatV.d-d[j].DatZ.d
  46.     end;
  47.   i:=1;
  48.   for j:=2 to n do
  49.     if e[i]>e[j]then i:=j;
  50.   writeln('Result:',e[i],'days');
  51.   {}
  52.   writeln('сколько заказов было не удовлетворено');
  53.   i:=0;
  54.   for j:=1 to n do
  55.     if d[j].DatV.d=0 then inc(i);
  56.   writeln('Result:',i,' ');
  57.   {}
  58.   writeln(' Кто чаще всего берет книги: ');
  59.   for i:=1 to n do
  60.     e[i]:=0;
  61.   for j:=1 to n-1 do
  62.     for i:=j+1 to n do
  63.       if(d[j].Fam=d[i].Fam) then
  64.         begin
  65.           inc(e[j]);
  66.           e[i]:=-n
  67.         end;
  68.   i:=1;
  69.   for j:=2 to n do
  70.     if e[i]<e[j] then i:=j;
  71.   writeln(d[i].Fam);
  72.   writeln;
  73.   {}
  74.   writeln('Кому выдали книги 15.09.13: ');
  75.   for j:=1 to n do
  76.     if(d[j].DatZ.d=15)and(d[j].DatZ.m=9)and(d[j].DatZ.d=13)then
  77.       write(d[j].Fam, ' ');
  78.   writeln;
  79.   {}
  80.   writeln(' Cколько человек заказывали книги 25.04.13: ');
  81.   i:=0;
  82.   for j:=1 to n do
  83.     if(d[j].DatZ.d=25)and(d[j].DatZ.m=4)and(d[j].DatZ.d=13)then inc(i);
  84.     { write(d[j].Fam, ' ');}
  85.   writeln('Result:',i);
  86. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы