Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_1-6.doc
Скачиваний:
6
Добавлен:
23.02.2016
Размер:
382.98 Кб
Скачать

Лабораторна робота № 4 (6 год.).

Тема роботи: обробка масивів вказівників.

Мета роботи: Оволодіння навичками створення статичних масивів вказівників на записи заданої структури.

Постановка задачі: Створити типізований файл записів заданої структури. Використовуючи динамічні змінні, створені за допомогою масиву вказівників, виконати обробку інформації файлу. Звільнити пам’ять.

Методичні вказівки до роботи:

  1. Створити типізований файл записів заданої структури з випадковими даними.

  2. Вивести вміст файлу.

  3. Створити статичний масив вказівників на записи заданої структури.

  4. Створити динамічні змінні – записи.

  5. Ввести інформацію з файлу до динамічних змінних.

  6. Виконати аналіз полів динамічних змінних відповідно до завдання.

  7. Вивести результати аналізу.

  8. Звільнити память.

  9. Вивести інформацію про завдання ( варіант, текст завдання ).

  10. Вивести інформацію про виконавця роботи (прізвище, ініціали, група).

  11. Завдання до роботи вибрати згідно з варіантом з Таблиці 4.

Зміст звіту:

1) Задача для конкретного варіанту.

2) Блок-схема програми.

3) Текст програми на Паскалі.

4) Результати роботи програми.

5) Висновок до роботи.

Приклад: Вивести суми полів тих записів, обидва поля яких від'ємні. Кількість елементтів файлу i масиву - 8, cтруктура записів - REAL, REAL.

Блок-схема програми

Текст програми на Паскалі

program LAB_4;

uses crt;

Type Zapis = record

Field1: real;

Field2: real;

End;

var

mZapis: array[1..8] of ^Zapis;

VarZapis: ^Zapis;

F: file of Zapis;

NameFile: string[8];

sum: real;

Range, i, Kol: integer;

begin

Range:=20000;

ClrScr;

WriteLn;

Write('Введiть iм''я файлу (до 8 символiв): ');

ReadLn(NameFile);

if Length(NameFile) = 0 then halt;

assign(F, NameFile+'.TXT');

rewrite(F);

Randomize;

for i := 1 to 8 do

begin

VarZapis^.Field1:= (Random(Range) - Range/2)/100;

VarZapis^.Field2:= (Random(Range) - Range/2)/100;

write(F,VarZapis^);

end;

Close(F);

WriteLn;

WriteLn('Типiзований файл створено. Hажмiть клавiшу.');

readkey;

ClrScr;

WriteLn;

WriteLn('Вмiст файлу :');

WriteLn;

assign(F, NameFile+'.TXT');

Reset(F);

for i := 1 to 8 do

begin

New( mZapis[i] );

Read(F, mZapis[i]^);

WriteLn('m[',i:1,'].Field1= ',mzapis[i]^.Field1:7:2,' m[',i:1,'].Field2= ',mZapis[i]^.Field2:7:2 );

end;

Close(F);

WriteLn;

WriteLn('Результати обробки масиву :');

WriteLn;

Kol:=0;

for i := 1 to 8 do

if (mZapis[i]^.Field1 < 0) and (mZapis[i]^.Field2 < 0) then

begin

Kol:=Kol+1;

sum:=mZapis[i]^.Field1+mZapis[i]^.Field2;

WriteLn('m[',i:1,'].Field1= ',mzapis[i]^.Field1:7:2,

' m[',i:2,'].Field2= ',mZapis[i]^.Field2:7:2,' Сума= ',sum:8:2 );

end;

if Kol = 0 then WriteLn('Записiв з обома вiд''ємнимi полями HЕМАЄ !');

for i := 1 to 8 do Dispose(mZapis[i]);

WriteLn;

WriteLn('Лабораторна робота N4.');

WriteLn('Завдання 8. Вивести суми полiв тих записiв,');

WriteLn('обидва поля яких вiд''ємнi.');

WriteLn;

WriteLn('Виконав студент Чемерис С., група ЗКТ-301');

readkey;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]