
- •Лабораторна робота №17
- •Теоретичні відомості.
- •Об'являються вказівники так:
- •Операції з вказівниками
- •Процедури для роботи з вказівниками
- •Функції для роботи з вказівниками і адресами
- •1. Приклад програми створення і видалення черги з десяти елементів.
- •2. Приклад програми створення і видалення стека з десяти елементів.
- •Виключення даних із списку
- •Практична частина
Виключення даних із списку
5. Приклад програми, що вводить дані про кожного студента, будує список, а потім видаляє зі списку елементи, що не задовольняють умову поставлену у задачі (дані про невстигаючих студентів).
Program Iskl_dan_spis;
Uses Crt;
Type
Dat = Record
FIO : String [30];
Ocen : Array [1. .4] Of Integer;
End;
Ssyl = ^Zapis;
Zapis = Record
SS : Ssyl;
Y : Dat;
End;
Var
Nach, S1,S2 : Ssyl;
N, I, J : Integer;
Begin
ClrScr;
Writeln('Введіть кількість прізвищ у списку');
Readln(N);
New(S1); Nach:=S1;
For I:= 1 To N Do
begin
S1^. SS:=Nil;
Writeln('Введіть прізвище студента :');
Readln(S1^. Y. FIO);
Writeln('Введіть оцінки по чотирьом предметам');
For J:= 1 To 4 Do Readln (S1^. Y. Ocen[j]);
S2:=S1; New(S1);
If I <> N
Then S2^. SS:=S1
Else Dispose(S1);
end; {Кінець формування списку}
s1:=nach;
while s1<>nil do
begin
write(S1^. Y. FIO:15);
For J:= 1 To 4 Do write (S1^. Y. Ocen[j]:2);
writeln;
s1:=s1^. ss;
end;
writeln;
S1:= nach;
Repeat
For I:= 1 To 4 Do
If S1^. Y. Ocen[i]=2
Then
If S1=Nach Then Nach:=S1^. SS
Else S2^. SS:=S1^. SS;
S2:=S1; {S2 - посилання на попередній елемент}
S1:=S1^. SS;
Until S1=Nil; {закінчено виключення із списку}
{Друкування списку}
Writeln ('Список Встигаючих студентів');
S1:=Nach;
While S1<>Nil Do
begin
Write(S1^. Y. FIO:15 );
For I:= 1 TO 4 Do Write(' ',S1^. Y. Ocen[i]:4);
Writeln;
S1:=S1^. SS;
end;
Readln;
End.
Практична частина
Завдання 1. Робота з чергою.
Змоделювати чергу з абонентів, які поступають на обслуговування (введення з клавіатури не менше 20)
Створити копію черги у файлі Inp_Ch.txt.
Поставити на обслуговування n елементів черги (n дорівнює номеру варіанта) і вилучити їх з черги.
Вилучених абонентів та абонентів, що лишились занести відповідно до файлів:Out_Chv.txt та Out_Chl.txt .
Завдання 2. Робота зі стеком.
Парні варіанти
Створити чергу абонентів з m елементів. Створити копію черги у файлі Inp_Ch.txt.
Переставити елементи черги у зворотньому порядку, не використовуючи проміжні масиви. Кінцевий результат зберегти у файлі Out_Ch.txt
Непарні варіанти
Створити чергу із n елементів і стек із m елементів . Їхні копії зберегти у файлі Inp_St.txt.
Додати елементи черги у вершину стека, отриманий результат зберегти у файлі Out_St.txt
Завдання 3. Робота з односпрямованим списком.
Постановка задачі.
Створити список студентів, що містить не менше 10 студентів.
Для кожного студента зазначити рік народження і оцінки по 4 екзаменам.
Алгоритм повинний містити в собі такі дії:
Введення з клавіатури даних про кожного студента;
Занесення інформації в однонаправлений список, упорядкований за алфавітом;
Збереження списку в текстовому файлі Inp_Sp.txt.
Виключення із списку елементів, що відносяться до студентів, у яких:
1. Середній бал менше середнього бала групи.
2. Середній бал менше 4.5.
3. Середній бал менше 4.
4. Середній бал менше 3.5.
5. Всі оцінки 5.
6. Одна 4, а інші 5.
7. Оцінка, отримана на першому іспиті, - 2.
8. Оцінка, отримана на другому іспиті, - 5.
9. Немає 3 і 2.
10.Більше однієї 2.
11.Одна 3, а інші 4 і 5.
12.Прізвище починається на букву Т
13.Прізвище починається на букву С
14.Рік народження нижче 1982.
15.Рік народження вище 1982
Результати представити у вихідному файлі Out_Sp.txt: Спочатку список вилучених студентів, далі список студентів, що лишились.
ПИТАННЯ ДЛЯ САМОКОНТРОЛЮ
На які групи можна розділити використовувані в програмуваннідані?
В чому полягає основне розходження між даними статичної структури і даними динамічної структури?
В чому особливість об'яви даних динамічної структури?
Яка конструкція використовується При роботі з динамічною змінною, що знаходиться в пам'яті, на яку вказує вказівник?
Як об’являються змінні-вказівники?
З яких елементів складається динамічна змінна?
Як вказівнику привласнити вміст іншого вказівника?
Як вказівнику привласнити адресу об'єкта?
Які операції можна виконувати над вказівниками?
Задано:
Var i:^ integer;
Чи відрізняються записи :
I:=234;
I^:=234 ?
Відповідь пояснити.
За допомогою яких процедур відбувається розподіл пам'яті під динамічні змінні?
В чому розходження між Nil і невизначеним станом?
Які дії виконують процедури New і Dispoze?
Що являє собою черга як структура даних?
Що являє собою стек, як структура даних?
Скільки вказівників потрібно для роботи з чергою?
Як додати елементи в чергу?
Як виключити елементи з черги?
Скільки вказівників потрібно для роботи зі стеком?
Як додати елементи в стек?
Як виключити елементи зі стеку?
Скільки вказівників потрібно для роботи зі односпрямованим списком?
Як додати елементи в список?
Як виключити елементи зі списку?
Як роздрукувати однонаправлений список?