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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2017, 11:47   #1
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию Удалить число, которое располагается на n-м месте в стеке. Free Pascal

Помогите пожалуйста с решением задачи, никак не получается ((
Создать стек со случайными целыми числами. Удалить число, которое располагается на n-м месте в стеке (значение n вводится с клавиатуры)
avatar54 вне форума Ответить с цитированием
Старый 21.05.2017, 11:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Покажите свои наработки, конкретные вопросы и т.п.

Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.05.2017, 12:32   #3
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию

пробовал делать по уже готовым процедурам
Код:
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.
avatar54 вне форума Ответить с цитированием
Старый 22.05.2017, 18:05   #4
avatar54
Пользователь
 
Регистрация: 21.02.2017
Сообщений: 29
По умолчанию Удалить число, которое располагается на 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
avatar54 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[free Pascal]: В заданном массиве удалить все числа, больше заданного числа R Jon_Morgan Помощь студентам 10 17.12.2016 01:56
Составить из числа наименьшее число, которое делится на 3 Promi Паскаль, Turbo Pascal, PascalABC.NET 15 11.03.2016 12:50
Free Alisa. ЯВУ, которое я разрабатываю для себя Stilet Софт 91 26.05.2015 21:14
Как из диапазона вывести число, которое первое удовлетворит одному из условий fury1986 Microsoft Office Excel 1 12.08.2012 10:11
Pascal. Сортировка в стеке aleksandrbol Помощь студентам 5 04.12.2011 20:10