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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 13:42   #1
Photomachine
Новичок
Джуниор
 
Аватар для Photomachine
 
Регистрация: 22.01.2009
Сообщений: 1
Восклицание Помогите с программой!!

Задание

1. На языке программирования Pascal реализовать процедуры работы со стеком на последовательном распределении памяти:

- Создание пустого стека

- Добавление элемента на вершину стека

- Удаление элемента с вершины стека

Процедуры, реализующие операции добавления и удаления элемента должны разумным образом обрабатывать ситуации переполнения и нехватки (схемы:

Т ← Т + 1; если T > M то ПЕРЕПОЛНЕНИЕ, иначе Х[Т] ← Y
(включить в стек)

если T = 0 то НЕХВАТКА, иначе Y ← X[T]; Т ← Т - 1
(исключить из стека)

Стек реализовать, используя одномерный массив и переменную типа integer (указатель на вершину стека).

2. Провести вычислительный эксперимент с полученными процедурами

Получить свой вариант файла, содержащего предложения на русском языке в кодировке DOS (Нажмите здесь). Номер варианта соответствует Вашему номеру в журнале академической группы.

a) Используя результат задания 1 запрограммировать получение нового текстового файла, в котором все слова во всех предложениях записаны в обратном порядке. В программе установить максимальный размер стека равным 10.

b) Используя результат задания 1 запрограммировать получение нового текстового файла, в котором в котором буквы каждого слова записаны в обратном порядке. В программе установить максимальный размер стека равным 5.

В процессе работы программы должна выводить текущее состояние стека (после каждой операции добавления, извлечения, очистки).



Вот здесь находится подробное описание задания!!!
http://kit.zsu.zp.ua/iLec/2sem/swpc2/Labs/1/index.htm
Вложения
Тип файла: txt 22.txt (1.3 Кб, 161 просмотров)
Photomachine вне форума
Старый 08.02.2009, 15:26   #2
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

Вот немного начал:
Код:
program project;
const
 n = 10;
 m = 2;
type

  stack = ^pstack;
  pstack = record
            int : integer;
            next : stack
           end;

  data = array [1..n] of integer;
var
 top,ptop : stack;
 a : data;
 er1,er2 : boolean;
 c : integer;
 i : byte;

 procedure create_stack ( var start : stack );
 begin
   start:=nil
 end;

 procedure add_stack ( var start : stack; x : integer; var count : integer;
                       const max : integer; var error : boolean );
 var
  p : stack;
 begin
   if count=max then error:=true
   else
   begin
     error:=false;
     if start=nil then
     begin
       new(start);
       start^.int:=x;
       start^.next:=nil
     end
     else
     begin
       new(p);
       p^.int:=x;
       p^.next:=start;
       start:=p
     end;
     inc(count)
   end
 end;

 procedure delete_stack ( var start : stack; error : boolean );
 var
  p : stack;
 begin
   if start<>nil then
   begin
     error:=false;
     p:=start;
     start:=start^.next;
     dispose(p)
   end
   else error:=true
 end;

begin

  randomize;
  writeln ('Your array: ');
  for i:=1 to n do
  begin
    a[i]:=random(10);
    write (a[i],' ')
  end;
  writeln;

  create_stack (top);
  c:=0;
  for i:=1 to n do
  begin
    write (a[i],'---> stack...');
    add_stack (top,a[i],c,m,er1);
    if er1 then
    begin
      writeln (' : stack overflow! Break...');
      break
    end
    else writeln (' : complited!')
  end;

  delete_stack (top,er2);
  writeln ('deleting...');
  if er2 then writeln (' : stack is empty!');

  ptop:=top;
  while ptop<>nil do
  begin
    writeln (ptop^.int);
    ptop:=ptop^.next
  end;

  readln;

end.
capta1n вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с программой. dvmisha Общие вопросы C/C++ 2 22.09.2008 00:20
Помогите с программой asale Общие вопросы Delphi 2 11.02.2007 20:06