Основы программирования на языке Паскаль

predmet:string; kst:array[1 6] of byte;

procedure rea_ocenki(fio:string;Var oc:mo);

Label M1,M2,M3,M4;

Var i:integer;

begin

for i:=1 to 5 do

Begin

case i of

1:predmet:='основыинформатики';

2:predmet:='высшейматематике';

3:predmet:='

философии';

4:predmet:='архитектуреЭВМ';

5:predmet:='историиУкраины'; end;

writeln('введитеоценкустудента ',fio,' no ',predmet);

M1: readln(oc[i,1]);

if (oc[i,1]<2) or (oc[i,1]>5) then

Begin writeln('введите правильно оценку'); goto M1; end;

if oc[i,1]>2 then Begin oc[i,2]:=0; oc[i,3]:=0; goto M4; end else

M2: writeln('введите вторую оценку студента ',fio,' по ',predmet);

readln(oc[i,2]);

if (oc[i,2]<2) or (oc[i,2]>5) then

Begin writeln('введите правильно оценку'); goto M2; end;

if oc[i,2]>2 then begin oc[i,3]:=0; goto M4; end else

M3: Writeln('введите третью оценку студента ',fio,' по ',predmet);

readln(oc[i,3]);

if (oc[i,3]<2) or (oc[i,3]>5) then

begin writeln('введите правильно оценку'); goto M3; end;

M4: end; end;

BEGIN { начало блока ввода оценок студентов}

writeln('при вводе оценки набираются: 5, если экзамен');

writeln('сдан на 5 и, если были пересдачи, то 2,2,3 ');

z: writeln('до первой положительной оценки');

writeln('задайте количество групп, не более 6 ');

readln(kgr);

for i:=1 to kgr do { установка индекса группы }

begin case i of { определяем группу по i }

1:n:=610;

2:n:=611;

3:n:=612;

4:n:=613;

5:n:=614;

6:n:=615;

else writeln('неправильно задано количество групп'); goto 2; end; end;

writeln('задайте количество студентов в группе ',n);

readln(kst[i]);

for j:=1 to kst[i] do { установка номера студента i в группе }

begin with gr[i,j] do { работать без составных имен }

begin namb:=n; writeln('введитефамилию',j,' студента гр. ',namb);

readln(fio);

for k:=1 to 5 do { обнуляеммассивоценок }

for l:=1 to 3 do

o[k,l]:=0;

writeln('введите оценки студентов ',fio);

rea_ocenki(fio,o); end;end;end;

{ конец ввода оценок студентов }

{ отображение на экране введения оценок }

for i:=1 to kgr do

for j:=1 to kst[i] do

Begin with gr[i,j] do

Begin for k:=1 to 5 do

write(o[k,1],o[k,2],o[k,3],' '); writeln; end; end;

{ конец вывода на экран оценок }

{ начало блока анализа успеваемости студентов }

for i:=1 to kgr do { индексгруппы }

for j:=1 to kst[i] do { номерстудента }

Beginkol_dvoek:=0; v:=0; { работать без составных имен }

with gr[i,j] do

Begin

for k:=1 to 5 do { номерпредмета }

Begin

{ итак, анализируем состояние успеваемости студента, информация }

{ о котором хранится в записи gr[i,j]; так как мы работаем под уп-}

{равлением оператора with gr[i,j], то можно пользоваться не }

{ составными именами полей }

case k of { определить название предмета j }

1:predmet:='основы информатики';

2:predmet:='высшая математика ';

3:predmet:='философия';

4:predmet:='архитектура ЭВМ';

5:predmet:='историяУкраины'; end;

if o[k,1]=2 then if o[k,2]=2 then if o[k,3]=2 then begin

writeln('студент ',fio,' группы ', namb,' подлежит отчислению так как');

writeln('имеет три двойки по предмету ',predmet);

v:=1; readln; goto w; end { на новый предмет }

else Begin kol_dvoek:=kol_dvoek+2; goto w; end

else Begin kol_dvoek:=kol_dvoek+1; goto w; end;

w: end;

if v=1 then goto u { кновомустуденту }

else if kol_dvoek=0 then goto u

else Begin

writeln('студент ',fio,' группы ',namb,' является разгильдяем так как');

writeln('имеет в зимнюю сессию ',kol_dvoek,' двоек и является');

writeln('кандидатом на отчисление в весеннем семестре');

readln; end; end;

u: end; END.

Программа снабжена комментариями, поэтому при внимательном рассмотрении читается легко. Трудности могут возникнуть при разборе блока анализа результатов, поэтому мы приведем блок-схему логической части этого блока (рис. 9.1).

9.1. Комплексные данные

При работе с комплексными данными удобно пользоваться записями с двумя полями, первое содержит информацию о действительной части данного, а второе – о мнимой части данного.

Program Prim45;

Type complex=record

deistv:real; mnim:real;

end;

Var a,b,c:complex;

BEGIN

a.deistv:=6.3;

a.mnim:=1.9; END.

Рис. 9.1

9.2. Запись с вариантами

Записи, описанные выше, имеют строго определенную структуру. однако есть возможность создавать записи, имеющие несколько вариантов одного и того же поля. Вариантные поля записываются после описания безвариантных полей с помощью оператора Case.

ТУРЕ

zap=record

описание безвариантных полей;

Case имя поля: тип имени поля of

список констант выбора: (поле, . тип); .

список констант выбора: (поле, . тип);

end;

Пример:

Туре zap=record

Nomer: byte; {фиксированные поля}

Articul: integer;

Case Flag: boolean of {вариантные поля}

TRUE: (cena l: integer);

FALSE: (cena 2; real);

end;

Var P, Si Zap;

поле Cena l доступно только тогда, когда Flag=TRUE

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 
 31 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы