Операторы цикла языка «Pascal». Изучение записей с вариантами. Вывод данных в виде таблицы

Страницы работы

Содержание работы

ЛАБОРАТОРНАЯ РАБОТА №5

Тема: Операторы цикла языка «Pascal» .

Цель работы:  Изучение записей с вариантами.

Постановка задачи:  Ввести фамилии, либо имена и адреса сотрудников организации в массив записей и вывести их в виде таблицы.

Псевдокод программы:

Program massiv_zapisei;

type {Описание типов}

name {Описание перечеслимого типа}

tperson {Описание записи}

var {Описание переменных}

m,i,j,max1,max2 {Переменные счётчиков, и максимальных элементов}

person {Массив записей}

masmax1, masmax2 {Массивы значений длины ячеек}

begin

{Запрос количества элементов таблицы}

{Заполнение массива записей}

for i:=1 to m do

{Оператор присоединения}

Readln(name);

Readln(cena);

{Расчёт длины ячеек таблицы}

{Вывод таблицы из массива записей}

for i:=1 to m do

begin

if i=1 then

{Печать верхнего обрамления таблицы}

{Вывод содержимого таблицы}

if i=m then

{Печать нижнего обрамления таблицы}

else

{Печать междустрочного обрамления таблицы}

end;

end.

Контрольный пример:

Программа просит ввести количество элементов таблицы. Вводим значение 3. Далее программа просит заполнить массив записей. По запросу вводим адрес. После ввода адреса программа спрашивает что заполнять дальше, Имя или Фамилию. Выбираем Имя, и заполняем его. Проделываем данную операцию ещё 2 раза, заполняя то Имя, то Фамилию. Далее программа выводит на экран таблицу из пар значений введённых ранее.

Результат работы программы:

Рисунок 1 – Результат работы программы

Текст программы:

program massiv_zapisei_2;

type

name = (firstname, lastname);

tperson = record

adress: string[30];

case kind: name of

firstname: (name1: string[20]);

lastname: (name2: string[20]);

end;

var

person: array[1..50] of tperson;

masmax1, masmax2: array [1..100] of Integer;

m,i,j,max1,max2: integer;

begin

Write('Kolichestvo sotrudnikov: ');

Readln(m);

for i:=1 to m do   //заполнение массива записей

begin

with person[i] do begin

write('adress sotrudnika ',i,': ');

readln(adress);

masmax2[i]:=Length(adress);

write('imya ili familiya? (1 or 2): ');

readln(j);

kind:=name(j-1);

case kind of

firstname:

begin

write('imya: ');

readln(name1);

masmax1[i]:=Length(name1);

end;

lastname:

begin

write('familiya: ');

readln(name2);

masmax1[i]:=Length(name2);

end;

end;

end;

end;

{end for, конец заполнения массива записей}

max1:=masmax1[1];

max2:=masmax2[1];

for i:=1 to m do //расчёт длины ячейки

begin

if masmax1[i]>max1 then max1:=masmax1[i];

if masmax2[i]>max2 then max2:=masmax2[i];

end;

writeln;

for i:=1 to m do  //вывод таблицы на экран

begin

if i=1 then

begin

write(chr(201));

for j:=1 to max1+2 do

write(chr(205));

write(chr(203));

for j:=1 to max2+2 do

write(chr(205));

writeln(chr(187));

end;

with person[i] do begin

case kind of

firstname:

begin

write(chr(186),' ',name1);

for j:=1 to max1-masmax1[i] do

write(chr(32));

end;

lastname:

begin

write(chr(186),' ',name2);

for j:=1 to max1-masmax1[i] do

write(chr(32));

end;

end;

write(' ',chr(186),' ',adress);

for j:=1 to max2-masmax2[i] do

write(chr(32));

writeln(' ',chr(186));

end;

if i=m then

begin

write(chr(200));

for j:=1 to max1+2 do

write(chr(205));

write(chr(202));

for j:=1 to max2+2 do

write(chr(205));

writeln(chr(188));

end

else

begin

write(chr(204));

for j:=1 to max1+2 do

write(chr(205));

write(chr(206));

for j:=1 to max2+2 do

write(chr(205));

writeln(chr(185));

end;

end;

{end for}

readln;

end.

Похожие материалы

Информация о работе

Предмет:
Информатика
Тип:
Написанные программы на языках программирования
Размер файла:
92 Kb
Скачали:
0