![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Цель задания:
1. Ознакомиться с возможностью выполнения операции исключения элементов из списка.
2. Закрепление навыков использования переменных ссылочных типов данных.
Постановка задачи:
Составить список учебной группы, содержащей 20 учащихся.
Указать для каждого учащегося оценки, полученные на четырех экзаменах. Разработать программу, которая вводит с экрана данные о каждом учащемся и заносит эти данные в однонаправленный список.
Обработать список согласно конкретному варианту.
Содержание отчета:
1. Постановка задачи.
2. Текст программы и результаты ее выполнения.
Вариант задания:
Одна оценка 4, а остальные 3.
Текст программы:
{Исключение элементов из списка}
Program ExludingelementsFromList;
Uses CRT;
Type
PStudents= ^TStudents;
TStudents= Record
Name: String[20];
Marks: Array [1..4] of ShortInt;
Next:PStudents;
End;
Var
PS:PStudents; {указатель на последний элемент списка в статической памяти}
{ Процедура заполнения списка }
Procedure Init;
Var
i,y:Integer;
pro:PStudents;
Label
Exits;
Begin
PS^.Next:=nil; {последний элемент списка}
y:=1;
While true Do Begin
New(pro); {выделяем память под переменную с указателем pro}
{Присваиваем значение переменной}
WriteLn('Введите Ф.И.О. ',y,'-го студента, "Enter" - завершение программы');
ReadLn(pro^.Name);
If pro^.Name='' Then GoTo Exits;
WriteLn('Введите оценки студента (всего 4)');
For i:=1 To 4 Do ReadLn(pro^.Marks[i]);
pro^.Next:=PS; {записываем в поле Next указатель на предыдущий элемент}
PS:=pro; {указателю на голову списка присваиваем новое значение
т.е значение текущего элемента}
Inc(y);
End;
Exits: End;
{Процедура удаления элементов из списка }
Procedure Removing;
Var
Head,p1,p2:PStudents;
i,e3,e4:ShortInt;
Label
Exits;
Begin
head:=PS; {первый элемент-голова списка}
p2:=PS; {текущий указатель}
p1:=PS; {указатель на предыдущий элемент}
While True Do Begin
e4:=0; e3:=0;
For i:=1 to 4 Do Begin {подсчет оценок}
If p2^.Marks[i]=4 Then inc(e4);
If p2^.Marks[i]=3 Then inc(e3);
End;
If (e4=1) And (e3=3) Then {проверка условия на удаление}
If (Head=P2) Then Begin {если удаляемый элемент - голова списка}
PS:=PS^.Next; {новая голова}
Dispose(p2); p2:=PS; p1:=PS; Head:=PS;
End
Else Begin {если элемент в середине списка}
p1^.Next:=p2^.Next; {полю Next предыдущего элемента
присваиваем указатель следующего за текущим}
Dispose(p2); p2:=p1^.Next; {уничтожаем ссылку на текущий элемент}
End
Else Begin
p2:=p2^.Next;{если ничего не удалялось
передвигаем указатель на следующий элемент}
p1:=p1^.Next; {передвигаем указатель предыдущего элемента}
End;
If (p2=nil) Then GoTo Exits;
End;
Exits:End;
{Процедура вывода на печать списка }
Procedure PrintOut;
var
p1:PStudents;
Label
Exits;
Begin
p1:=PS;
While True Do Begin
WriteLn(p1^.Name);
If p1^.Next=nil Then GoTo Exits;
p1:=p1^.Next;
End;
Exits:End;
{Тело программы }
Begin
Init;
Removing;
PrintOut;
WriteLn('Нажмите любую клавишу...');
Repeat Until KeyPressed;
End.
Результат работы программы:
Введите Ф.И.О. 1-го студента, "Enter" - завершение программы Иванов И.И. Введите оценки студента (всего 4) Введите Ф.И.О. 2-го студента, "Enter" - завершение программы Петров П.П. Введите оценки студента (всего 4) Введите Ф.И.О. 3-го студента, "Enter" - завершение программы Сидоров С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 4-го студента, "Enter" - завершение программы Иваненко И.И. Введите оценки студента (всего 4) Введите Ф.И.О. 5-го студента, "Enter" - завершение программы Петренко Введите оценки студента (всего 4) Введите Ф.И.О. 6-го студента, "Enter" - завершение программы Сидоренко С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 7-го студента, "Enter" - завершение программы Иванчук И.И. Введите оценки студента (всего 4) Введите Ф.И.О. 8-го студента, "Enter" - завершение программы Петрук П.П. Введите оценки студента (всего 4) Введите Ф.И.О. 9-го студента, "Enter" - завершение программы Сидорчук С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 10-го студента, "Enter" - завершение программы Самосадкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 11-го студента, "Enter" - завершение программы Самоделкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 12-го студента, "Enter" - завершение программы Самопалкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 13-го студента, "Enter" - завершение программы Самохвалкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 14-го студента, "Enter" - завершение программы Самострелкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 15-го студента, "Enter" - завершение программы Самоедкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 16-го студента, "Enter" - завершение программы Самогонкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 17-го студента, "Enter" - завершение программы Самокаткин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 18-го студента, "Enter" - завершение программы Самолеткин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 19-го студента, "Enter" - завершение программы Самоходкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 20-го студента, "Enter" - завершение программы Самоучкин С.С. Введите оценки студента (всего 4) Введите Ф.И.О. 21-го студента, "Enter" - завершение программы Самоходкин С.С. Самолеткин С.С. Самокаткин С.С. Самострелкин С.С. Самоделкин С.С. Петрук П.П. Иванчук И.И. Петренко Петров П.П. Иванов И.И. Нажмите любую клавишу... |
Варианты задания.
Исключить из списка элементы, относящиеся к учащимся, у которых:
1) Средний балл меньше среднего балла группы.
2) Средний балл меньше 4,5.
3) Средний балл больше 4.
4) Все оценки 5.
5) Одна оценка 4, а остальные - 5.
6) Оценка, полученная на первом экзамене - 2.
7) Оценка, полученная на втором экзамене - 5.
8) Нет удовлетворительных и неудовлетворительных оценок.
9) Больше одной оценки 2.
10) Одна оценка 3, а остальные 4 и 5.
11) Одна оценка 5, а остальные 4.
12) Оценки только 4 и 5.
13) Больше одной оценки 3.
14) Две оценки 3.
15) Одна оценка 4, а остальные 3.
16) Все оценки 3.
17) Оценки 3 и 4.
18) Все оценки 4.
19) Оценка, полученная на первом экзамене - 3.
20) Оценки за первый и третий экзамен 3.
21) Одна оценка 5, а остальные 3.
22) Только одна оценка 5.
23) Две оценки 5, а остальные 2.
24) Одна оценка 2, а остальные 5.
Распечатать оставшийся список.
Дата публикования: 2015-02-22; Прочитано: 233 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!