Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Стеки, Паскаль 
:(
    Опции темы
Gromila
Дата 17.5.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Задание : 

Создать два стека по 5 элементов. Слить их в один стек. Результирующий стек вывести на экран.

--------------------------------------------------------

Создание стека я сделал.

Подскажите как слить 2 стека в один ?  



Код


Program STACK;
type  PStack = ^TStack;
  TStack  = record   
           chislo: integer;         
    next  : PStack;      
   end;var  x, Stack : PStack;  
i  : integer;
Procedure INPUT_STACK;
begin  Stack := nil;
 for i := 1 to 5 do  begin      New(x);   
   write ('Введите ', i, ' число '); 
   readln(x^.chislo);    
  x^.next := Stack;    
 Stack:=x;  end;
end;
Procedure OUTPUT_STACK;
begin  
  if Stack = nil     
  then writeln('Стек пуст!')    
  else   begin                
     x := Stack;        
             while x<> nil do        
            begin                  
      write (x^.chislo,'  ');      
                  x := x^.next;        
          end;         
     end;
end;
begin 
 INPUT_STACK;  
OUTPUT_STACK;
end.


  
PM MAIL   Вверх
_hunter
Дата 17.5.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



тупо взять второй стек и все элементы из него положить в первый 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 17.5.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Gromila, Вообще в Delpi есть уже класс стека
TStack; (uses Contnrs)
А в каком порядке элементы надо сливать в один? 


--------------------
Vit вечная память.

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

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Snowy
Дата 17.5.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Нужно найти последний элемент первого стека и в его next прописать второй стек. 
PM MAIL   Вверх
drkot
Дата 17.5.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Я бы поступил так:
  Сделал функции
        PUSHStack(_Stack: PStack; _Elem:TElem):TError;
        POPStack(_Stack: PStack; VAR _Elem:TElem):TError;
 
Алгоритм:
   Наполнил первый стек;
   Наполнил второй стек;
   Выбираеш значения из первого стека и заталкиваеш во второй (или наоборот)
   Выбираеш значения из второго стека и выводиш на экран.

   В кодовом варианте у тебя все реализовано.

Вот и все.  Учись студент.      


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Yanis
Дата 17.5.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Здаётся мне, что это студент. Не стоит предлагать, нужно написать smile 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
drkot
Дата 17.5.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Yanis @  17.5.2006,  17:56 Найти цитируемый пост)
 нужно написать

Написать то можно, тока ему пользы не будет.  smile 

Yanis, 
а придет к тебе такой программист даш ему задание а он по форумам будет исходники просить. Некузяво получится.  

Это сообщение отредактировал(а) drkot - 17.5.2006, 17:59


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Gromila
Дата 17.5.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



Ну вообще то я не на программера учусь, это у меня как проходной этап, т.е. мне главное работу сдать.

Хотя программирование нравится smile 

Вот так прога должна выглядить ?

Код

program STACK_Pr;
type
  PStack = ^TStack;
  TStack  = record
    chislo: integer;
    next  : PStack;
  end;

Procedure INPUT_STACK(var stack: pstack);
var
  x: pstack;
  i: integer;
begin
  Stack := nil;
  for i := 1 to 5 do
  begin
      New(x);
      write('item #', i:2, ' = '); readln(x^.chislo);
      x^.next := Stack;
      Stack:=x;
  end;
end;

Procedure OUTPUT_STACK(stack: PStack);
var x: PStack;
begin
  if Stack = nil
    then writeln('<empty>')
    else begin
      x := Stack;
      while x <> nil do begin
        write(x^.chislo:4);
        x := x^.next;
      end;
      writeln;
    end;
end;

Procedure ConcatStack(const s1, s2: PStack);
var p: PStack;
begin
  p := s1;
  while p ^.next <> nil do
    p := p^.next;

  p^.next := s2;
end;

var s1, s2: pstack;
begin
  INPUT_STACK(s1);
  INPUT_STACK(s2);
  output_stack(s1);
  output_stack(s2);

  concatStack(s1, s2);
  OUTPUT_STACK(s1);
end.
 
PM MAIL   Вверх
Yanis
Дата 17.5.2006, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(Gromila @  17.5.2006,  19:18 Найти цитируемый пост)
это у меня как проходной этап

Понимаю.
 smile Я бы сам с радостью "пропустил" некоторые этапы smile  


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
drkot
Дата 17.5.2006, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Gromila @  17.5.2006,  18:18 Найти цитируемый пост)
Вот так прога должна выглядить ?

Работает? Значит может и так выглядеть.
Но при написании кода надо стремиться к "красоте" ибо красивый алгоритм работает сам посебе, а некрасивый ...
К примеру: а если понадобится 6 елементов в стек добавить или 4, что отдельные процедуры ввода писать будеш.
Лучше в процедуры закладывать элементарные логически завершенные действия, а не целый алгоритм (две меленьких лычше одной большой).
 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Gromila
Дата 17.5.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



drkot  smile   ты это моему однокурснику скажи, вот ему точно на программирование надо было идти, он в прогах всё почти хочет предусмотреть, поэтому даже самые маленькие задачки занимают в 2 раза больше кода чем  у всех остальных.

А мне главное чтобы работало smile  
PM MAIL   Вверх
drkot
Дата 17.5.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 5
Всего: 8



Цитата(Gromila @  17.5.2006,  19:26 Найти цитируемый пост)
А мне главное чтобы работало

Согласен. Но это до первой тысячи строк. А когда звонят и говорят "5 лет назад вы нам программу писали .... надо изменения внести" вот тогда радуешся что все предусмотрел

Сори за  smile  уже нев тему. 


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Gromila
Дата 17.5.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 16.5.2006

Репутация: нет
Всего: нет



 smile   Ок, согласен, прекращаем оффтопить. smile  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.