Бодя386
01.07.2022 05:36

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

● Запись набора операций состоит из последовательности операндов (значений) и знаков операций. Операнды (значения) в выражении при письменной записи разделяются пробелами.

● Выражение читается слева направо. Когда в выражении встречается знак операции, выполняется соответствующая операция над двумя последними встретившимися перед ним операндами (значениями) в порядке их записи. Результат операции заменяет в выражении последовательность её операндов (значений) и её знак, после чего выражение вычисляется дальше по тому же правилу.

● Результатом вычисления выражения становится результат последней вычисленной операции.

Например, выражение 7-2*3, записанное в обратной польской записи, будет выглядеть как 7 2 3 * -

1. Первый по порядку знак операции — «*», поэтому первой выполняется операция умножения над операндами 2 и 3 (они стоят последними перед знаком). Выражение при этом преобразуется к виду 7 6 − (результат умножения — 6, — заменяет тройку «2 3 *»).

2. Второй знак операции — «−». Выполняется операция вычитания над операндами 7 и 6.

3. Вычисление закончено. Результат последней операции равен 1, это и есть результат вычисления выражения.

В случае же выражения (7-2)*3 - его интерпретация в обратной польской записи будет выглядеть как 7 2 - 3 *

Дана таблица:


Обратная польская запись - форма записи математических и логических выражений, в которой операнды (з

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
fgsjjhw
26.11.2020 13:02
1. Надо добавить точку в последней строке программы. Иначе работать не будет.
2. Меняется всего одна строка в программе:

program pr2;

type
  student = record {объявление нового типа данных student}
    LastName: string; {фамилия студента}
    bal: array [1..5] of integer; {массив для 5-ти оценок}
    average: real {средний студента}
  end;

var
  pupil: array [1..100] of student; {массив pupil (максимум из 100 элементов) типа student}
  n, i, j, s: integer;{переменные целого типа}

begin
  write('Введите количество студентов: ');
  readln(n);
  for i := 1 to n do
  begin{запрос данных по n студентам}
    with pupil[i] do
    begin
      Write('Введите фамилию студента №', i, ': '); {запрос фамилии студента под номером i}
      Readln(LastName);
      s := 0; {целочисленная переменная для определения суммы студента}
      for j := 1 to 5 do
      begin{цикл для обработки 5-ти оценок каждого студента}
        write('Введите оценку за экзамен №:', j, ': ' );
        readln(bal[j] );
        s := s + bal[j]; {суммирование 5-ти оценок студента}
      end;
      average := s / 5; {определение среднего значения и запись в переменную average}
    end;
  end;
  writeln;
  writeln( 'Студенты, имеющие средний больший или равный 4');
  for i := 1 to n do
  begin
    if pupil[i].average >= 4 then {если средний студента >=4}
    write(pupil[i].LastName,', ');
  end;
end.
0,0(0 оценок)
Ответ:
mops123321
26.11.2020 13:02
В запись student добавляете новое поле kurs,
Type student = recordLastName: string ; bal: array [1..5] of integer; 
kurs: integer;average: real end;
В цикле по студентам добавляете ввод курса
with pupil[i] do begin
Write ('Введите фамилию студента №', i ,': '); 
Readln (LastName);
 Write('Введите курс '); Readln(kurs);
В конце программы изменяете вывод
writeln ( 'Студенты первокурсники, имеющие средний больший или равный 4');
For i:=1 to n do beginif (pupil[i].average >=4) and (pupil[i].kurs = 1) then 
write (pupil[i].LastName,',  ');
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота