Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Экспериментальный раздел работы



Экспериментальный раздел работы

Познакомьтесь с двумя вариантами решения задачи «Считалочка», протестируйте их. Предложите свой вариант решения задачи, возможно без использования динамических структур. В чем достоинства и недостатки каждого варианта? Результаты сохраните в текстовом файле.

Задача. «Считалочка». N ребят расположены по кругу. Начав отсчет от первого, удаляют каждого k-го, смыкая при этом круг. Определить порядок удаления ребят из круга. Для хранения данных об участниках игры используем кольцевой список (значением поля Next последнего элемента является адрес первого элемента списка).

Вариант 1.

Вариант 2.

uses crt;type{Элемент кольцевого списка }PCNode = ^TCNode;TCNode = record data: string; next: PCNode;end; varcirList, next: PCNode;n,i,k: integer;tmp: string;beginclrscr;{Создаем список }GetMem(cirList, sizeof(TCNode));cirList^.next:= cirList;{Первый элемент }write('Введите имя первого ребенка: ');readln(cirList^.data);{Получаем n - количество элементов }repeatwrite('Введите количество детей, больше 1 n = ');readln(n);until(n>1);{Заполняем список }for i:= 2 to n dobeginwrite('Имя ребенка ',i,': ');next:= cirList^.next;GetMem(cirList^.next, sizeof(TCNode));cirList:= cirList^.next;cirList^.next:= next;readln(cirList^.data);end;{Вводим k }repeatwrite('k = '); readln(k);until(k > 0);{Пока в списке не останется }{всего один элемент }while (cirList <> cirList^.next) dobegin{Отсчитываем k-1 элемент }for i:= 1 to k-1 docirList:= cirList^.next;{Следующий элемент - k-й }next:= cirList^.next;{Выводим k-й элемент}writeln(next^.data);cirList^.next:= next^.next;{Удаляем k-й элемент }FreeMem(next, sizeof(TCNode));end;{Выводим последний элемент}writeln('Остался = ', cirList^.data);{Удаляем последний элемент }FreeMem(cirList, sizeof(TCNode));{Ждем, пока пользователь не }{ нажмет [Enter] }Readln;end.

Вариант 3.

Ваш!)))


Дата добавления: 2015-11-04; просмотров: 39 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Уо минский государственный медицинский колледж | Эффективная рекламная акция

mybiblioteka.su - 2015-2024 год. (0.008 сек.)