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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.10.2013, 18:33   #1
Despot777
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 22
По умолчанию Создать очередь натуральных чисел

Создать очередь натуральных чисел. На основе очереди создать стек. В стеке должны быть только нечетные элементы. Подскажите идею создания очереди.
Despot777 вне форума Ответить с цитированием
Старый 30.10.2013, 18:36   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пример очереди: http://www.programmersforum.ru/showthread.php?t=20796
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2013, 19:28   #3
Despot777
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 22
По умолчанию

Я правильно сделал? вроде бы работает верно.
Код:
program l4;
uses CRT;
type
ch=^uz;
uz=record
         x: integer;
         next: ch;
         end;


var
first: ch; 
u:ch;     
fir: ch; 
last: ch; 
uku: ch;     
c: char;
f,b:boolean;
Begin

new(first);      last:=first;
f:=false;
b:=false;
writeln('Введите (от 1 и выше)');  readln(first^.x);
if(first^.x mod 2<>0)then b:=true;
first^.next:=nil;
writeln('Хотите продолжить? y-äà  n-íåò');  readln(c);
while c='y' do
	begin
	f:=false;

		new(u);  u^.next:=first;
    repeat
    writeln('Введите (от 1 и выше)');  readln(u^.x);
    if u^.x>=0 then begin f:=true; if(u^.x mod 2<>0)then b:=true;end;
    until(f);
    first:=u;
		writeln('Хотите продолжить? y-äà  n-íåò');  readln(c);
	end;


if(b) then
begin

repeat
f:=false;
u:=first;  first:=u^.next;
new(fir);   last:=fir;   fir^.next:=nil;
if(u^.x mod 2<>0)then begin fir^.x:=u^.x; f:=true; end;
Dispose(u);
until(f);

while (first<>nil) do
 begin
  	u:=first;  first:=u^.next;
		if Odd(u^.x)then
    begin
    new(uku);  uku^.next:=fir;
    uku^.x:=u^.x;
		fir:=uku;
		Dispose(u);
    end
    else
    Dispose(u);
   end;


   writeln('Стек с нечетными числами: ');
    while(fir<>nil) do
    begin
    writeln(fir^.x);
     uku:=fir;
     fir:=uku^.next;
     dispose(uku);
     end;

  end
  else begin writeln('В стеке не было нечетных чисел!');
  while first<>nil do
  begin u:=first;  first:=u^.next;  Dispose(u);end;
  end;
readln;
End.

Последний раз редактировалось Despot777; 30.10.2013 в 19:33.
Despot777 вне форума Ответить с цитированием
Старый 30.10.2013, 20:49   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вроде бы работает верно.
Запусти. Программа нужный результат показала? - верно.
Цитата:
repeat
f:=false;
u:=first; first:=u^.next;
Думается мне что тут вместо first нужно ставить last, ибо он у тебя на первый элемент стека указывает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.10.2013, 20:57   #5
Despot777
Пользователь
 
Регистрация: 14.09.2013
Сообщений: 22
По умолчанию

можете заменить? я попробовал и прога стала криво работать.
Despot777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
N натуральных чисел Saddiel Помощь студентам 4 04.06.2013 15:17
Нахождение натуральных чисел neomax38 Помощь студентам 1 28.10.2010 09:33
Последовательность натуральных чисел 777UFO777 Общие вопросы Delphi 23 03.12.2008 20:42
Создать очередь из n целых чисел вычисляющая по формуле А=х*х+1; evrey Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2008 20:44
Создать очередь из n целых чисел вычисляющих по формуле А=х*х+1; х=1,2,3..n. evrey Помощь студентам 3 01.06.2008 00:00