Ярослав4497
01.06.2023 15:39

на паскале. Для работы с очередью, т.е. последовательностью элементов, в которую элементы всегда добавляются в конец, а удаляются из начала ("первым пришел - первым ушел"), нужны обычно следующие операции:
ОЧИСТОЧ(Q) - создать пустую очередь Q (очистить очередь);
ПУСТОЧ(Q) - проверить, является ли очередь Q пустой;
ПЕЧОЧ(Q) – распечатать содержимое очереди;
ВОЧЕРЕДЬ(Q,x) - добавить в конец очереди Q элемент x;
ИЗОЧЕРЕДЬ(Q,x) - удалить из очереди Q первый элемент, присвоив его параметру x.
Требуется для каждого из указанных ниже представлений очереди описать соответствующий тип ОЧЕРЕДЬ, считая, что все элементы очереди имеют некоторый тип ТЭО, и реализовать в виде процедур или функций перечисленные операции над очередью ( если операция по тем или иным причинам не может быть выполнена, следует передать управление некоторой процедуре ОШИБКА(k), считая ее уже описанной, где k - номер ошибки: 1 - переполнение очереди, 2 - исчерпание очереди).
Представление очереди (n – целая константа >1):
а) для каждой очереди отводится свой массив из N компонентов типа ТЭО, в котором элементы очереди занимают группу соседних компонент, индексы первой и последней из которых запоминаются; при этом, когда очередь достигает правого края массива, все ее элементы сдвигаются к левому краю;
б) аналогичное представление, но массив как бы склеивается в кольцо, поэтому если очередь достигает правого края массива, то новые элементы записываются в начало массива;
в) для каждой очереди создается свой однонаправленный список из эле-ментов типа ТЭО, при этом запоминаются ссылки на первое и последнее звенья списка.
2. Для работы со стеком, т.е. последовательностью элементов, в которой элементы всегда добавляются в конец и удаляются из конца ("последним пришел - первым ушел"), нужны обычно следующие операции:
ОЧИСТЕК(S) - создать пустой стек S (очистить стек);
ПЕЧСТЕК(S) – распечатать содержимое стека;
ПУСТЕК(S) - проверить, является ли стек S пустым;
ВСТЕК(S,X) - добавить в конец стека S элемент X;
ИЗСТЕК(S,X) - удалить из очереди S последний элемент, присвоив его параметру X.
Требуется для каждого из указанных ниже представлений стека описать соответствующий тип СТЕК, считая, что все элементы стека имеют некоторый тип ТЭC, и реализовать в виде процедур или функций перечисленные операции над стеком (если операция по тем или иным причинам невыполнима, следует передать управление некоторой процедуре ОШИБКА(k), считая ее уже описанной, где k - номер ошибки: 1 -переполнение стека, 2 -исчерпание стека).
Представление стека (n -целая константа>1):
а) для каждого стека отводится свой массив из n компонентов типа ТЭC, в начале которого располагаются элементы стека, при этом запоминается индекс компоненты массива, занятой последним элементом стека;
б) для каждого стека создается свой однонаправленный список, в котором элементы стека располагаются в обратном порядке.

13. Описать процедуру translate(infix,postfix), которая переводит выражение (определение "выражения" смотри в задаче 12), записанное в обычной (ин-фиксной) форме в текстовом файле infix, в постфиксную форму и в таком виде записывает его в текcтовый файл postfix.
Использовать следующий алгоритм перевода. В стек записывается открывающая скобка, и выражение просматривается слева направо. Если встречается операнд (число или переменная), то он сразу переносится в файл postfix. Если встречается открывающая скобка, то она заносится в стек, а если встречается закрывающая скобка, то из стека извлекаются находящиеся там знаки операций до ближайшей открывающей скобки, которая также удаляется из стека, и все знаки (в порядке их извлечения) записываются в файл postfix. Когда же встречается знак операции, то из конца стека извлекаются (до ближайшей скобки, которая сохраняется в стеке) знаки операций, старшинство которых больше или равно старшинству данной операции, и они записываются в файл postfix, после чего рассматриваемый знак заносится в стек. В заключение выполняются такие же действия, как если бы встречалась закрывающая скобка.

16. Сформировать файл из символов и с очереди за один просмотр файла напечатать сначала все гласные буквы, затем знаки препинания и, наконец, - все согласные, сохраняя исходный порядок в каждой из этих групп символов.

25. Используя очередь или стек (предварительно описав его тип и операции над ним (упр.1 или упр.2)), описать процедуру или функцию, которая при-сваивает параметру Е элемент из самого левого листа непустого дерева Т (лист - вершина, из которого не выходит ни одной ветви). Продемонстрировать работу программы.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
alfiea7
31.03.2022 22:13
Uses GraphABC;
var a,b,c:array[10..99] of integer;
 ast,bst,cst:string;
 i:integer;
begin
ast:='A:';
bst:='Б:';
cst:='В:';
for i:=10 to 99 do
begin
c[i]:=i;
a[i]:=c[i]-i+random(50);
b[i]:=c[i]-a[i];
ast:=ast+' '+inttostr(a[i]);
bst:=bst+' '+inttostr(b[i]);
cst:=cst+' '+inttostr(c[i]);
end;
setpencolor(clRed);
line(0,0,150,0);
line(150,0,75,50);
line(75,50,0,0);
rectangle(0,50,150,300);
DrawTextCentered(0,50,150,300,ast);
setpencolor(clYellow);
line(150,0,300,0);
line(300,0,225,50);
line(225,50,150,0);
rectangle(150,50,300,300);
DrawTextCentered(150,50,300,300,bst);
setpencolor(clGreen);
line(300,0,450,0);
line(450,0,375,50);
line(375,50,300,0);
rectangle(300,50,450,300);
DrawTextCentered(300,50,450,300,cst);
end.
0,0(0 оценок)
Ответ:
wolfbz
18.04.2023 15:12
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016
type
  Point=record
  x,y:real
  end;

function GetPoint(c:char):Point;
begin
  Writeln('Введите координаты точки ',c,':');
  Read(Result.x,Result.y)
end;

function Line(A,B:Point):real;
begin
  Result:=sqrt(sqr(B.x-A.x)+sqr(B.y-A.y))
end;

function SqTriangle(pA,pB,pC:Point):real;
begin
  var a:=Line(pB,pC);
  var b:=Line(pA,pC);
  var c:=Line(pA,pB);
  if (a+b>c) and (a+c>b) and (b+c>a) then begin
    var p:=(a+b+c)/2;
    Result:=sqrt(p*(p-a)*(p-b)*(p-c))
    end
  else Result:=0
end;

begin
  var A:=GetPoint('A');
  var B:=GetPoint('B');
  var C:=GetPoint('C');
  Writeln('Площадь треугольника равна ',SqTriangle(A,B,C))
end.

Тестовое решение:
Введите координаты точки A:
-5 3.18
Введите координаты точки B:
1.45 6.2
Введите координаты точки C:
6 -5.93
Площадь треугольника равна 45.98975
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота