Текст задания
Создать два стека, содержащих текстовую и числовую информацию соответственно (количество слов и чисел может быть неодинаковым). Создать третий стек, в котором числа и слова чередовались и были бы записаны в обратном порядке («лишние» числа или слова должны быть записаны в конец стека).
Решение
Решение программы оформлено в виде отчета в 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.
Программирование динамических структур данных в Pascal
- Дисциплина: Программирование
- Код работы: КО-140
- Работу выложил: Администратор
-
350.00 р.
Теги: Pascal
Не подошла работа?
Узнайте стоимость написания работы по Вашему заданию
(это быстро и бесплатно)