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

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

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

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

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

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

Создать очередь натуральных чисел. На основе очереди создать стек, который будет вмещать только нечетные элементы очереди. Вывести на экран содержимое стека, или сообщить, что нечетных элементов в очереди нет. Удалить стек. Удалить очередь.
Код:
program l4;
uses CRT;
type
ch=^uz;
uz=record
         x: integer;
         next: ch;
         end;
 n=^uzel;
uzel=record
         info: integer;
         next: n;
         end;
var
first: n; {Посилання на перший елемент стеку}
u:n;     {Посилання на довільний вузол черги}
fir: ch; {Посилання на перший елемент черги}
last: ch; {Посилання на останній елемент черги}
uku: ch;     {Посилання на довільний вузол черги}
c: char;
f,b:boolean;
Begin
{Введення першого елементу в стек}
new(first);
f:=false;
b:=false;
repeat
writeln('Введите первый елемент (от 1 выше)');  readln(first^.info);
if first^.info>=0 then begin f:=true; if(first^.info mod 2=1)then b:=true;end;
until(f);
first^.next:=nil;
writeln('Хотите продолжить ввод');  readln(c);
while c='y' do
	begin
	f:=false;
{Ведення нового елементу в стек}
		new(u);  u^.next:=first;
    repeat
    writeln('Введите очередной елемент (от 1 выше)');  readln(u^.info);
    if u^.info>=0 then begin f:=true; if(u^.info mod 2=1)then b:=true;end;
    until(f);
    first:=u;
		writeln('Хотите продолжать?');  readln(c);
	end;


if(b) then
begin
{Введення першого елементу в чергу}
repeat
f:=false;
u:=first;  first:=u^.next;
new(fir);   last:=fir;   fir^.next:=nil;
if(u^.info mod 2=1)then begin fir^.x:=u^.info; f:=true; end;
Dispose(u);
until(f);

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


   writeln('очередь нечётных чисел');
    while(fir<>last) do
    begin
    writeln(fir^.x);
     fir:=fir^.next;
     if fir=last then writeln(last^.x);
    end;

  	while (fir<>last) do
    begin
    uku:=fir;
    fir:=uku^.next;
    if fir<>last then Dispose(uku)
    else  Dispose (last);
  	end;
  	
  end
  else begin writeln('В стэке небыло нечётных чисел');
  while first<>nil do
  begin u:=first;  first:=u^.next;  Dispose(u);end;
  end;
End.
Despot777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка Кольша Общие вопросы Delphi 1 12.01.2012 20:03
Проверка ZHDN Microsoft Office Excel 9 11.11.2011 10:49
excel.Проверка VBA и проверка функции Будда Помощь студентам 0 14.04.2011 21:10
проверка на IE TDrive JavaScript, Ajax 2 05.03.2010 13:41