М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Farys
Farys
25.09.2020 16:18 •  Информатика

Постфиксное выражение – это числовое выражение, в котором сначала записываются операнды, а затем знак операции. например: 3 5 + означает 3+5. особенностью постфиксных выражений является то, что при их записи скобки не нужны. например, выражение (3+4*2)/3-1 можно записать так: 3 4 2 * + 3 / 1 -. написать программу вычисления постфиксного выражения, содержащего цифры и знаки арифметических операций. операнды и операции разделяются пробелами.

👇
Ответ:
rekrifcm
rekrifcm
25.09.2020
Var
  stack : array [1..1000] of double;
  op1, op2 : double;
  i : integer;
  c : char;
begin
  i := 0;
  while not eoln do
  begin
    read (c);
    if c in ['0'..'9'] then
    begin
      inc (i);
      stack[i] := ord (c) - ord ('0');
    end
    else if c <> ' ' then
    begin
      if i < 2 then
      begin
        writeln ('Error!'); halt;
      end;
      op2 := stack[i];
      dec (i);
      op1 := stack[i];
      case c of
        '+' : stack[i] := op1 + op2;
        '-' : stack[i] := op1 - op2;
        '*' : stack[i] := op1 * op2;
        '/' : stack[i] := op1 / op2;
      end;
    end;
  end;
  if i <> 1 then
    writeln ('Error!')
  else
    writeln (stack[i]);
end.
4,6(97 оценок)
Ответ:
ilmir14
ilmir14
25.09.2020
Программа написана на паскале авс. Считывает из файла строку (выражение в постфиксальной форме), после чего спрашивает пользователя счтать значение выражения или нет. Если вводишь "д" (то есть для программы это да), то она просит ввести значения для переменных х и у, которые могут быть задействованы в выражении и считает значение
4,7(55 оценок)
Открыть все ответы
Ответ:
ttlekzhan
ttlekzhan
25.09.2020

bool check_intercalary(int k){

   return (k % 4 == 0 && k % 100 != 0) || (k % 400 == 0);

}

signed main(){

   map<int, string> u;

   u[1] = "января";

   u[2] = "февраля";

   u[3] = "марта";

   u[4] = "апреля";

   u[5] = "мая";

   u[6] = "июня";

   u[7] = "июля";

   u[8] = "августа";

   u[9] = "сентября";

   u[10] = "октября";

   u[11] = "ноября";

   u[12] = "декабря";

   int d, m, y;

   cin >> d >> m >> y;

   bool ok = true;

   if(m == 2 && d > 28 + check_intercalary(y))

       ok = false;

   else if(((m % 2 == 1 && m < 8) || (m % 2 == 0 && m >= 8)) && d > 31)

       ok = false;

   else if(d > 30)

       ok = false;

   if(ok)

       cout << d << " " << u[m] << " " << y << " г.";

   else

       cout << "Неверный ввод";

}

4,5(30 оценок)
Ответ:
Duxa22
Duxa22
25.09.2020

У тебя конструкция такая:

if(day <= 31) {

if(day >= 1  || day == 31) {

//Январь, март, май, июль, авгус, октябрь, декабрь

} else if(day >= 1 || day == 30) {

// Апрель, июнь, сентябрь, ноябрь

} else if(...) {

// февраль

} else {

//Неверно

}

Если мы вводим правильный день месяца, то мы всегда заходим в первый же if и игнорируем все последующие if-else, поскольку в первый уже зашли. Например, не только 31 января соответствует условию if(day >= 1 || day == 31), но и 2 апреля, и даже 29 февраля. Только все, кто не попал в switch-case внутри первого if, будут выкидывать "неверный день"

Если не слишком переписывать код, то надо заменить конструкции else if на простые if, и убрать внутри default. Но как только мы нашли совпадение, т.е. зашли в одну из веток switch-case и вывели в консоль дату, надо из функции или программы делать return.

А вообще раазумнее и короче было бы сначала проверять введенный месяц, а затем уже проверять, соответствует ли день введенному месяцу. Извини за псевдокод, но так должно быть понятнее:

if год > 0 {

if месяц in (январь, март, май, июль, авгус, октябрь, декабрь) {

if день in 1..31 { // выводим дату } else { // неверный день }

}

else if месяц in (апрель, июнь, сентябрь, ноябрь) {

if день in 1..30 { // выводим дату } else { // неверный день }

}

else if месяц == февраль {

if проверка_на_обычный_год OR проверка_на_високосный год { // выводим дату } else { // неверный день }

}

else { // неверный месяц }

}

else { // неверный год }

4,4(44 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ