Помощь - Поиск - Пользователи - Календарь
Полная версия: помоги пожалуста со списками
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
serega204
Помогите написать программу. Реализовать два однонаправленных линейных списка, элементы в которых символьного типа. Сформировать список из элементов, которые входят только в один из списков.
amega
что такое указатель и динамическая память вам знакома?
если да, то с чем имеено проблемы?
serega204
мне это тяжело...очень...напишите прогу плиз....плиз
RathaR
Цитата(serega204 @ 8.10.2009 21:42) *

мне это тяжело...очень...напишите прогу плиз....плиз

amega вообщето хотел узнать что именно ты знаеш в области програмирования, от чего мы можем отталкиваться помогая тебе, ибо если ты здаш програму написаную с использованием динамических структур например, а вы их еще не учили, то нетрудно догадаться что тебе скажет преподаватель... мы ведь не знаем что знаеш ты smile.gif
serega204
сейчас мы изучили линейные динамические структуры...уже была лабораторка, но в этом я почти не шарю...как раз я знаю...к этому относится списки, очереди и стеки...а сдавать надо уже в понедельник....поэтому порошу помощи....и буду бесценно благодарен ВАМ....преподавателю тоже много вопросов задавал....поэтому в проге самой я разберусь...СПАСИБО
volvo
Цитата
.напишите прогу плиз....плиз
Вроде бы задание - твое, а не наше, поэтому и "прогу" писать тебе...Начинай, если что не получится - поправим... А так, чтобы с нуля и ты мог скопировать и сдать - смысла не вижу...
amega
Цитата
amega вообщето хотел узнать что именно ты знаеш в области програмирования, от чего мы можем отталкиваться помогая тебе, ибо если ты здаш програму написаную с использованием динамических структур например, а вы их еще не учили, то нетрудно догадаться что тебе скажет преподаватель... мы ведь не знаем что знаеш ты


хехе, может ето обращение не ко мне а к serega204

я так понял список еще должен быть отсортирован?

нут вот тебе начало( маленький толчок)

type

TPRec=^Trec;
TRec=record
ch:char;
next:TPRec;
end;

var
start1 : TPRec;
start2 : TPRec;
start3 : TPRec;


procedure addtolist(var start:TPRec, newel:TPRec);
begin
{процедру реализует добавление елемента.
Получает старт по вару, поскольку новый елемент может стать в начало списка,
и указатель на новый елемент}
end;

procedure newlist(st1:TPRec; st2:TPRec; var st3:TPRec );
begin
{слияние свух списков в 1 по заданому критерию}
end;


ну вот, 2 основные процедуры которые нужно написать smile.gif
serega204
большое спасибо....но мне там не нужно слияние мы не изучали ещё сортировки....там просто как-то без них нужно....буду очень благодарен если напишите

Добавлено через 7 мин.
я вам добавлю...прогу, а вы посмотрите пожалуйста, что не так....я всё сам писать стараюсь, только мало чего из этого получается


Program Lr1_2; Uses CRT;
Type
Point = ^item;
item = Record
Spisok_1 : Char;
Spisok_2 : Char;
next : Point;
End;
Var r : Point; n : char;
Procedure Form (First:point);
Var p : char;
Begin
First := nil;
While n <> ' ' do Begin
New®;
r^.Next := First;
r^.Spisok_1 := n;
First := r;
exit;
end;
p := n;
end ;
Procedure Print (first:point);
Begin
r := first;
While r<> nil do begin
Writeln ('slovo = ', r^.Spisok_1);
r := r^.next;
end;
end;
Procedure Search (first : point; x : char; var q : point);
var ok : boolean;
begin
r := first;
ok := true;
While (r <> nil) and ok do
if r^.Spisok_1 = x then ok := false
else r := r^.Next;
q := r;
end;
BEGIN clrscr;
Assign (Output, ''); Rewrite (Output);
Writeln ('First Spisok');
Readln;
Form ®;
Writeln ('Second Spisok');
Readln;
Print ®;
Writeln ('Eltmenti, kotorie vhodiat v odin iz spiskov');
{Form ®; }
{ Print ®;}
Search (r, n, r);
{Dispose®; } Close(Output);
END.

и посмотрите пожалуйста что не так
Lapp
Цитата(amega @ 9.10.2009 9:43) *
хехе, может ето обращение не ко мне а к serega204
а с чего ты решил, что оно к тебе, амега? blink.gif smile.gif


М
serega204, используй тэги!! Правила раздела, п.2, и Правила Форума, п.5
Нечитаемая же программа.. Как, ты думаешь, тебе будут помогать?..



serega204
посмотрите плиз...процедуру New_list и что там не так!!! СПАСИБО
serega204

[Procedure New_list (L1, L2 : Tptr);]
[Var pl_1, pl_2 : tptr;]
[Begin]
[pl_1 := L1; pl_2 := L2;]
[While (pl_1 <> nil) and (pl_2 <> nil) do]
[Begin]
[ If L1^.inf = pl_2^.inf then]
[ Begin]
[ pl_1 := L1;]
[ While (pl_1 <> nil) and (pl_2 <> nil) and (pl_1^.inf = pl_2^.inf) do]
[ Begin]
[ pl_1 := pl_1^.next;]
[ pl_2 := pl_2^.next;]
[ End;]
[ End]
[ else pl_2 := pl_2^.next;]
[End;]
amega
Цитата
а с чего ты решил, что оно к тебе, амега?

чет я ступил blink.gif blink.gif

и так пишем процедуру добавления

procedure addtolist(var start:TPRec, newel:TPRec);
var
wp,pp:TPRec;
begin
pp:=nil;
wp:=start;
{ищем место вставки нашего елемента}
while (wp<>nil) and (newel^.ch > Wp^.ch) do
begin
pp:=wp;
wp:=wp^.next;
end;
{проверям указатель пп(пред поинт), если он = нил то єто значит что у нас нет элементов в списке,
либо вставляемый элемент меньше первого}
if pp=nil then
begin
newel^.next:=start;
start:=newel;
end
else
begin
newel^.next:=pp^.next;
pp^.next:=newel;
end;
end;




как видим нет никаких процедур сортировки!

да в списке могут бить повторяющие елементы?
serega204
спасибо...большое....если что там не так будет я потом скину прогу (в задании про повторяющиеся элементы ничего не скказано)

Добавлено через 13 мин.
там я много чего поправил, из-за того что я начал ваше сравнивать и своё набранное....там процедура удаления списка не работает и задание не выпоняется....посмотрите пожалуйста в чём я там не прав

Нажмите для просмотра прикрепленного файла



Добавлено через 36 сек.
Цитата(serega204 @ 9.10.2009 23:00) *

спасибо...большое....если что там не так будет я потом скину прогу (в задании про повторяющиеся элементы ничего не скказано)

Добавлено через 13 мин.
там я много чего поправил, из-за того что я начал ваше сравнивать и своё набранное....там процедура удаления списка не работает и задание не выпоняется....посмотрите пожалуйста в чём я там не прав

Нажмите для просмотра прикрепленного файла

Program spiski; Uses Crt;
Type
Tinf = Char;
Tptr = ^Tlist;
Tlist = record
inf : Tinf;
next : Tptr;
end;
Var A, B : Tptr;
n : char;

Procedure Create_list (Var L : Tptr);
Var q, p : Tptr; e : Tinf;
Begin L := nil;
while not eoln do Begin
New(p);
Read(e);
p^.inf := e;
p^.next := nil;
if L = nil then L := p;
q := p;
end;
Readln
end;

Procedure New_list (Var L1, L2 : Tptr);
Var pl_1, pl_2 : Tptr;
Begin
pl_1 := nil; pl_2 := L1;
While (pl_1 <> nil) and (L2^.inf > pl_1^.inf) do
pl_1 := pl_2;
pl_2 := pl_2^.next;
If (pl_1 = nil) then Begin
L2^.next := L1;
L1 := L2;
end
else Begin
L2^.next := pl_1^.next;
pl_1^.next := L2;
Writeln (pl_1^.inf);
end;
end;

Procedure Delete_list (Var h : Tptr);
Var p : Tptr;
Begin
While h <> nil do
Begin
p := h;
h := h^.next;
Dispose (p);
end;
end;

BEGIN Clrscr;
Writeln ('Enter spisok A');
Create_list(A);
Writeln ('Enter spisok B');
Create_list(B);
Writeln ('Okonchatelniy spisok C');
New_List(A, B);
Delete_list (A); Delete_list(B);
readln;
END.
serega204
посмотрите пожалуйста верхнюю прогу и скажите что здесь не так....спасибо большое
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.