Задание
Для журнальной ведомости составить программу вывода на печать фамилий студентов, которые имеют пропуски без уважительной причины (указать их количество) и неудовлетворительные оценки.
Выбор алгоритма решения задачи
Для решения данной задачи необходимо сделать запись, в которой есть номер, имя, оценки, количество пропусков. Необходимы будут процедуры вводу, вывода, и вывод студентов, которые имеют прокуски без уважительных причин.
Описание решения задачи
Объявляем три процедуры:
procedure vvod(var xt:tt); forward;
procedure Print_propusk(var pt:tt); forward;
procedure vivod(var vt:tt); forward;
Процедура вводу является стандартной, то есть через readln мы вносим значение в таблицу. В процедуре Print_propusk выводятся на печать все студенты, которые имеют прокуски без уважительных причин. Процедура вывода выводит таблицу, которую мы заполнили.
Схема алгоритма решения задачи
1 Основная программа
2 Процедура вывода
3 Процедура вывода студентов, имеющие прокуски без уважительных причин
4 Процедура вывода
Текст програми
program lab;
const n=3;
type
tz=record {наш список}
NN:byte;
fio:string[40];
P1:byte;
P2:byte;
P3:byte;
npro:byte; {propuski}
end;
tt=array [1..n] of tz;
var
t:tt;
procedure vvod(var xt:tt); forward; {прототип процедуры ввода}
procedure Print_propusk(var pt:tt);forward;{прототип процедуры печать}
procedure vivod(var vt:tt); forward; {прототип процедуры вывода}
procedure vvod; {процедура ввода}
var
i:byte;
begin
for i:=1 to n do
with xt[i] do begin
writeln('vvedite nomer, FIO, ocenky po 3-m predmetam, kolichestvo propuskov po neuvajitelnoy prichini');
readln(NN);
readln(fio);
readln(P1);
readln(P2);
readln(P3);
readln(npro);
end;
end;
procedure Print_propusk; {процедура вывода студентов, имеющих}
var {пропусти по неуважительной причине}
i,j,x,y:byte;
begin
writeln;
x:=0;
for i:=1 to n do begin
y:=0;
if pt[i].npro>0 then {если пропусков больше чем 0}
with pt[i] do begin
writeln(NN,'. ',fio);
writeln('kolichestvo propuskov: ',npro);
x:=1;
if (P1<3) or (P2<3) or (P3<3) then begin
write('Neudovletvoritel''nie ocenki: ');
if (P1<3) then begin
y:=1;
writeln(' ',P1);
end;
if (P2<3) then begin
y:=1;
write(' ',P2);
end;
if (P3<3) then begin
y:=1;
write(' ',P3);
end;
writeln;
end else writeln('Neudovletvoritel''nih ocenok net!');
end;
end;
if x = 0 then
writeln('Net studentov s neuvajitel''nimi propuskami');
end;
procedure vivod; {процедура вывода всех студентов}
var
i:byte;
begin
writeln('------------------------------------------------------');
writeln('| | FIO |Mat.|Fiz.|prog.|propusk|');
writeln('------------------------------------------------------');
for i:=1 to n do
with vt[i] do
writeln('|',NN:2,' | ',FIO:23,' | ',P1:2,' | ',P2:2,' | ',P3:3,' | ',npro,’ |’);
writeln('------------------------------------------------------');
end;
{osnovnaya programma}
BEGIN
vvod(t);
Print_propusk(t);
vivod(t);
readln;
END.
Результат работы программы