Исправить ошибки в программе о читателях - Turbo Pascal
Формулировка задачи:
Решение задачи: «Исправить ошибки в программе о читателях»
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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д