Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 29.12.2013, 18:40   #1 (permalink)
andrew_ryaba
Новичок
 
Регистрация: 30.11.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Динамический список, Паскаль

Здравствуйте! Не могли бы вы мне помочь с такой задачей:
Описать процедуры
а)которая вставляет в непустой список L пару новых элементов Е1 и Е2 перед его последним элементом
б)определяет, сколько раз входит элемент Е в список L и каждое значение Е заменяет на среднее арифметическое чисел,

находящихся до числа Е
Знаю, как добавить элемент на последнее место, но как на предпоследнее?
А по поводу второй процедуры пока вообще не знаю, как...

Program Spisok;
uses
crt;
type
Tinf=integer;
List=^TList;
TList=record
data:TInf; {данные, хранимые в элементе}
next:List; {указатель на следующий элемент списка}
end;
var
Spis,tmpl:List;
znach:integer;
ch:char;
f: text;

procedure sozdanie_spiska(spis1:List);
var first,p1,p2:List;
begin
assign (f,'spisok.txt');
first:=nil;
while not seekeof (f) do begin
new (P1);
read (f, p1.data);
if first=nil then first:= p1 else p2^.next:= p1;
p2:=p1;
end;
p2^.next:= nil; end;

procedure Print(spis1:List);
begin
if spis1=nil then
begin
writeln('Список пуст.');
exit;
end;
while spis1<>nil do
begin
Write(spis1^.data, ' ');
spis1:=spis1^.next
end;
end;

{Процедура добавления нового элемента в односвязный список}
procedure AddElem(var spis1:List;znach1:TInf);
var
tmp:List;
begin
begin
tmp:=spis1;
while tmp^.next<>nil do
tmp:=tmp^.next; {ставим tmp на последний элемент списка}
GetMem(tmp^.next,sizeof(TList)); {создаём следующий элемент}
tmp:=tmp^.next; {переносим tmp на новый элемент}
end;
tmp^.next:=nil; {зануляем указатель}
tmp^.data:=znach1; {заносим значение}
end;

BEGIN
sozdanie_spiska(spis);
repeat
clrscr;
Write('Программа для работы со ');
TextColor(4);
Writeln('списком.');
TextColor(7);
Writeln('Выберите желаемое действие:');
Writeln('1) процедура 1.');
Writeln('2) Вывод списка.');
Writeln('3) процедура 2.');
writeln;
ch:=readkey;
case ch of
'1':begin
write('Введите значение добавляемого элемента: ');
readln(znach);
AddElem(Spis,znach);
end;
'2':begin
clrscr;
Print(Spis);
readkey;
end;
'3':begin

end;
end;
until ch='8';
FreeStek(Spis);
end.
andrew_ryaba вне форума   Ответить с цитированием

Старый 29.12.2013, 18:40
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Можно узнать множество полезной информации перейдя по этим ссылкам

Список файлообменников
Черный список
Вывести список положительных чисел, список отрицательных чисел на C#
Черный список и SMS

Старый 02.01.2014, 21:34   #2 (permalink)
andrew_ryaba
Новичок
 
Регистрация: 30.11.2013
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Задача решена.

andrew_ryaba вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:25.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.