Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 21.05.2017, 22:53   #1 (permalink)
kot_
Новичок
 
Регистрация: 06.03.2017
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Удалить число, которое располагается на n-м месте в стеке. Free Pascal

Создать стек со случайными целыми числами. Удалить число, которое располагается на n-м месте в стеке (значение n вводится с клавиатуры)

Помогите пожалуйста с решением, пробовал делать по готовым процедурам но что-то не получается

PHP код:
uses
  crt

type
  Tinf
=integer
  List=^
TList;  
  
TList=record 
    data
:TInf;  
    
next:List;   
  
end;
  
  
procedure Print(stek1:List);
begin
  
if stek1=nil then {проверка на пустоту стека}
  
begin
    writeln
('Стек пуст.');
    exit;
  
end;
  while 
stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
  
begin   {а это произойдёт как только он перейдёт по ссылке последнего элемента}
    
Write(stek1^.data' '); {выводить данные}
    
stek1:=stek1^.next  {и переносить указатель вглубь по стеку}
  
end;
end;
Function 
SearchElemZnach(stek1:List;znach1:TInf):List;
begin
  
if stek1<>nil then {если стек не пустто}
    while (
Stek1<>nil) and (znach1<>stek1^.data) do {пока stek1 не укажет в "пустоту" или пока мы не нашли нужный нам элемент}
      
stek1:=stek1^.next; {переносить указатель}
  
SearchElemZnach:=stek1;{функция возвращает указатель на найденный элемент}
end;      
   
Procedure DelElemPos(var stek1:List;posi:integer);
var
  
i:integer;
  
tmp:List;
begin
  
if posi<1 then {проверка на ввод информации}
    exit;
  if 
stek1=nil then {если стек пуст}
  
begin
    Write
('Стек пуст');
    exit
  
end;
  
i:=1; {будет считать позиции}
  
tmp:=stek1;
  while (
tmp<>nil) and (i<>posi) do {пока tmp не укажет в "пустоту" или мы не найдём искомый элемент}
  
begin
    tmp
:=tmp^.next; {переходим на следующий элемент}
    
inc(i)   {увеличиваем значение счётчика}
  
end;
  if 
tmp=nil then {если элемента нет выводим соответствующие сообщения и выходим}
  
begin
    Writeln
('Элемента с порядковым номером ' ,posi' нет в стеке.');
    
writeln('В стеке ' ,i-1' элемента(ов).');
    exit
  
end;
  
DelElem(stek1,tmp); {если мы не вышлито элемент есть и его следует удалить}
  
Writeln('Элемент удалён.'); {сообщаем о выполнении действия}
end;
          
begin
            clrscr
; {очистка экрана}
            Print(
Stk); {вызов процедуры вывода}
            
Write('Введите порядковый номер удаляемого элемента: ');
            
readln(znach); {ввод позиции удаляемого файла}
            
DelElemPos(Stk,znach);{вызов процедуры удаления элемента по значению}
            
readkey;{ожидаем нажатия клавиши}
            
end
kot_ вне форума   Ответить с цитированием

Старый 21.05.2017, 22:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Я думаю, что проблему решать легче есть набраться больше информации

Удалить число, которое располагается на n-м месте в стеке. Pascal
Чтение данных из файла. Free Pascal - Free Pascal
Дано шестизначное число N. Pascal
Free Pascal. Число-палиндром
Turbo Pascal 8, дано натуральное число n

Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:41.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.