• Программирование динамических структур данных в Pascal

Текст задания

Создать два стека, содержащих текстовую и числовую информацию соответственно (количество слов и чисел может быть неодинаковым). Создать третий стек, в котором числа и слова чередовались и были бы записаны в обратном порядке («лишние» числа или слова должны быть записаны в конец стека).

Решение

Решение программы оформлено в виде отчета в Word, данный отчет содержит следующие пункты:

  • описания варианта задания;
  • постановки задачи;
  • описания переменных и констант;
  • структуры программы и спецификации: общая структурная схема должна отражать взаимосвязи основной программы и всех ее модулей и подпрограмм. Спецификация программы должна включать: имя программы; входные данные с указанием типа данных; входные данные с указанием типа данных. Спецификация подпрограммы должна включать: имя подпрограммы; назначение подпрограммы; входные данные с указанием типа данных; выходные данные с указанием типа данных; вид подпрограммы; заголовок подпрограммы;
  • распечатки текста программы с комментариями;
  • результата ручной обработки данных;
  • результата электронной обработки данных.

Исходный код программы с комментариями Вы можете найти ниже. Для получения доступа к отчету необходимо добавить работу в корзину и оплатить её. Доступ к отчету у Вас появится сразу после оплаты.

Исходный код программы

Program Stek;
uses
  crt; {Для использования readkey и clrscr}
type
  Tinf=String; {тип данных, который будет храниться в элементе стека}
  List=^TList;  {Указатель на элемент типа TList}
  TList=record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись}
    data:TInf;  {данные, хранимые в элементе}
    next:List;   {указатель на следующий элемент}
end;


{Процедура добавляющая элемент в стек}
procedure AddElem(var stek1:List;znach1:TInf);
var
  tmp:List;
begin
  GetMem(tmp,sizeof(TList)); {выделяем в памяти место для нового элемента}
  tmp^.next:=stek1;  {указатель на следующий элемент "направляем" на вершину стека}
  tmp^.data:=znach1; {добавляем к элементу данные}
  stek1:=tmp; {вершина стека изменилась, надо перенести и указатели на неё}
end;

{Процедура формирования итогового стека}
Procedure Working(Stek1,Stek2,Stek3:List);
Var
  tmp:List;
begin
end;

{Процедура вывода стека}
procedure Print(stek1:List);
begin
  if stek1=nil then {проверка на пустоту стека}
  begin
    writeln('Stek pust');
    exit;
  end;
  while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
  begin   {а это произойдёт как только он перейдёт по ссылке последнего элемента}
    Write(stek1^.data, ' '); {выводить данне}
    stek1:=stek1^.next  {и переносить указатель вглубь по стеку}
  end;
  Writeln;
end;


var
  StkSt,StkR,StkI, tmpSt,tmpR:List;
  znach:Tinf;
  i,n,m:integer;
Begin
  StkSt:=Nil;
  StkR:=Nil;
  StkI:=Nil;
  clrscr;
  Write('Vvedite kol-vo slov v 1 steke: '); {Вводим данные первого стека}
  Readln (n);
  For i:=1 to n do
   begin
    Write('vvedite ',i,' slovo: ');
    Readln(Znach);
    AddElem(StkSt,Znach);
   end;
  Write('Vvedite kol-vo chisel v 2 steke: ');{Вводим данные второго стека}
  Readln(m);
  For i:=1 to m do
   begin
    Write('vvedite' ,i,' chislo: ');
    Readln(Znach);
    AddElem(StkR,Znach);
   end;
TmpSt:=StkSt; 
TmpR:=StkR;
  For i:=1 to n+m do
    begin
     if (i mod 2 = 1) And (TmpSt<>nil) then {Если i нечетное, то в итоговый стек ложим данные из первого стека}
       begin
         Znach := TmpSt^.data;
         AddElem(StkI,Znach);
         TmpSt:=TmpSt^.next;
       end;
     if (i mod 2 = 0) And (TmpR<>nil) then {Если i четное, то в итоговый стек ложим данные из первого стека}
       begin
         Znach := TmpR^.data;
         AddElem(StkI,Znach);
         TmpR:=TmpR^.next;
       end;
     end;
Writeln ('Ishodni stek 1:'); {Выводим начальные данные и конечный результат}
Print (StkSt);
Writeln ('Ishodni stek 2:');
Print (StkR);
Writeln('Itogovi stek:');
Print (StkI);
Readln;
end.

Написать отзыв

Внимание: HTML не поддерживается! Используйте обычный текст!
    Плохо           Хорошо

Программирование динамических структур данных в Pascal

  • 200.00 р.



Теги: Pascal

Не подошла работа?

Узнайте стоимость написания работы по Вашему заданию

(это быстро и бесплатно)

Узнать стоимость

Спасибо, не надо