Вариант 9.
Задание к работе:
Составить программу построения и вывода на терминал формулы из заданной последовательности символов длиной «К». Количество указателей для отображения формулы определяется её длиной, причём первые «К» указателей должны быть использованы для ввода последовательности символов. В процессе построения формулы все символы должны храниться только в одном экземпляре. При вводе формулы порядок следования указателей в операторе вывода должен соответствовать порядку их объявления. Последовательности символов и формулы, которые строятся из этих последовательностей:
Последовательность символов: Х, 1, 2, !, +, *, /.
Формула: 1+Х+Х*Х/2!
Для решения поставленной задачи был составлен следующий алгоритм:
НАЧАЛО
P1:=’X’, P2:=’1′, P3:=’2′, P4:=’!’, P5:=’+’, P6:=’*’, P7:=’/’
Вывести значения P1, P2, P3, P4, P5, P6, P7
p10:=P4, P9:=P3, P8:=P7, P7:=P1, P3:=P1, P1:=P2, P2:=P5, P4:=P5, P5:=P7
Вывести значения P1, P2, P3, P4, P5, P6, P7, P8, P9, P10
КОНЕЦ
По этому алгоритму была составлена программа на языке PASCAL с использованием динамических переменных:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Program lab2_din; uses crt; Procedure Free_Mem; begin WriteLn('Доступно ', MemAvail, ' байт.'); end; var p1,p2,p3,p4,p5,p6,p7,p8,p9,p10:^char; n:byte; m:longint; begin Writeln; Free_Mem; New(p1); New(p2); New(p3); New(p4); New(p5); New(p6); New(p7); P1^:='x'; P2^:='1'; P3^:='2'; P4^:='!'; P5^:='+'; P6^:='*'; P7^:='/'; Write('Начальные значения: '); Write(p1^,p2^,p3^,p4^,p5^,p6^,p7^); Writeln('.'); p10:=P4; P9:=P3; P8:=P7; P7:=P1; P3:=P1; P1:=P2; P2:=P5; P4:=P5; P5:=P7; Write('Результат: '); Write(p1^,p2^,p3^,p4^,p5^,p6^,p7^,p8^,p9^,p10^); Writeln('.'); dispose(P1);dispose(P4); dispose(P7 );dispose(p6); dispose(P8); dispose(p9); dispose(P10); Free_Mem; Writeln('Программа завершила свою работу. Нажмите любую клавишу...'); readkey; end. |
Графическое изображение структуры данных, в которой храниться результат работы программы: