Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2008, 09:39   #1
evrey
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 13
Смех задачка на паскале

Условие задачи
Даны указатели Р1 и Р2 на вершины двух не пустых стеков.Переместить все элементы из первого стека во второй и вывести адрес новой вершины Р3 второго стека.

Помогите переделать прогамму которая у меня есть на паскале согласно условию задачи .Текст програмы в приложениии.

Program n15;
Uses crt;
TYPE Ukaz=^stack;
stack = record
it:integer;
n:ukaz;
end;
var t,k,n,t1,k1,n1:ukaz;
v,kol:integer;
Begin
ClrScr;
T:=nil;
textcolor(red);
While true do
begin
Read(v);
if v=999 then break;
New(k);
k^.it:=v;
k^.n:=t;
t:=k;
end;
ClrScr;
T1:=nil;
textcolor(12);
While true do
begin
Read(v);
if v=999 then break;
New(k1);
k1^.it:=v;
k1^.n:=t1;
t1:=k1;
end;
ClrScr;
While (t<>nil)and(t^.it mod 2 <> 0) do
begin
new(k);
k^.it:=t^.it;
k^.n:=t1;
t1:=k;
t:=t^.n;
end;
k:=t;
textcolor(Green);
While k<>nil do
begin
Write(k^.it,' ');
k:=k^.n;
end;
WriteLn;
textcolor(White);
WriteLn('---------');
k1:=t1;
While k1<>nil do
begin
Write(k1^.it,' ');
k1:=k1^.n;
end;
WriteLn;
Textcolor(yellow);
if t=nil then writeln(' V pervom steke net elementov')
else WriteLn(' Adres pervogo steka - ',longint(seg(t^)*16+Ofs(t^)));
textcolor(blue);
Writeln('-------------------============-----------------------');
textcolor(Red);
WriteLn(' Adres Vtorogo Steka - ',longint(seg(t1^)*16+Ofs(t1^)));
ReadKey;
End.
evrey вне форума Ответить с цитированием
Старый 03.06.2008, 09:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

У тебя есть адреса исходного стека и выходного есть? Размер стека тоже получишь, так вот процедура move поможет тебе перенести данные из одного адреса в другой.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2008, 13:29   #3
evrey
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 13
Вопрос поммоги

помоги пожалуйста в стеках я не силен и в адресах стека тоже не петрю
evrey вне форума Ответить с цитированием
Старый 03.06.2008, 13:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну во-первых, будь я модератором этой ветки я бы тебя пожурил за некузявое оформление кода - плохочитабельные коды не люблю, и значить помоши при этом от меня мало.

Но все же смотри: Допусти есть некотрая структура элемента стека, ну вообще то стек это обычный массив LIFO но раз ты кучю стеком назвал то пусть так и будет.
Код:
type
 m=^q;
  q=record
  i:integer;
  qn:m;
 end;

var c,c1,a,a1,b,b1:m;i:integer;
Тогда предположим наполним оба стека даннымми:
Код:
new(a);
new(a1);

b:=a;
b1:=a1;

for i:=1 to 10 do begin
 a^.i:=i;
 new(a^.qn);
 a:=a^.qn;
 a^.qn:=nil;

 a1^.i:=i*2;
 new(a1^.qn);
 a1:=a1^.qn;
 a1^.qn:=nil;
end;
Теперь чтоб поменять содержимое твоих "стеков" сделаем так:
Код:
a:=b;
a1:=b1;

while a<>nil do begin
 i:=a^.i;
 a^.i:=a1^.i;
 a1^.i:=i;
 a:=a^.qn;
 a1:=a1^.qn;
end;
Вывод на экран сам делай.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2008, 20:59   #5
evrey
Пользователь
 
Регистрация: 31.05.2008
Сообщений: 13
По умолчанию

напиши всю програму по стеках а то я не допераю их воообще.

Очень тебе буду благодарен
evrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка в паскале на матрицы Марик Помощь студентам 2 25.06.2008 00:18
Задачка для ума 2 ZORRO2005 Microsoft Office Excel 6 19.04.2008 10:45
Задачка на Паскале Dissid Помощь студентам 2 09.10.2007 21:28