Форум программистов, компьютерный форум CyberForum.ru

польская инверсная запись. Помогите с алгоритмом. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Записать текст матрицы от ее центра по спирали против часовой стрелки http://www.cyberforum.ru/cpp-beginners/thread3641.html
Задача записать текст квадратной матрицы размера n(n-нечетное) от центра матрицы по спирали против часовой стрелки. Например матрица n i k t a m o p o amkintopo Какие есть предложения?
C++ Заданное число от 1 до 1999 вывести римскими цифрами помогите плиз переделать программку smile.gif необходимо осуществить ввод\вывод через cin\cout. и не использовать библ. string. просто массив char-ов. вывод в txt-файл не нужен. вот само задание если что: Заданное число от 1 до 1999 вывести римскими цифрами. Код #include <stdio.h> #include <string.h> #define NVALS 13 http://www.cyberforum.ru/cpp-beginners/thread3625.html
C++ Генерация паролей
Помогите, пожалуйста, уважаемый программисты!! сочно нужна простенькая задачка (текст) по генерации паролей!!! к сожалению нет возможности поискать по интернету сейчас, а тем более поискать, но нужно очень срочно!!! пожааалуйста!! может у кого нибудь уже есть? :help:
C++ Определение простого числа
С клавиатуры вводят натуральное 3-х значное число. Является ли оно простым (простые числа делятся нацело только на 1 и на себя). Описать функции: 1)ввода исходных данных 2) обработки исходных данных 3)вывода результата. С помощью этих функций написать программу для решения предложенной задачи...
C++ Задача Иосифа http://www.cyberforum.ru/cpp-beginners/thread3602.html
Что-то жесткая задача... По кругу располагаются n=20 человек. Ведущий считает по кругу, начиная с первого, и выводит («казнит») m-го человека. Круг смыкается, счет возобновляется со следующего после «казненного»; так продолжается, пока «в живых» останется только один человек. Найти номер оставшегося «в живых» человека, а также найти такое m>1, при котором «в живых» останется первый.
C++ Error LNK2001: "unresolved external symbol _main" вот программа: #include <iostream.h> #include <stdlib.h> #include <time.h> class Mas_2d { public: Mas_2d(); подробнее

Показать сообщение отдельно
mik-a-el
CyberForum Owner
57390 / 37138 / 231
Регистрация: 10.04.2006
Сообщений: 12,689
28.11.2007, 18:39
Пример:
Одной из форм представления выражений является польская инверсная запись, задающая выражение так, что операции в нем записываются в порядке выполнения, а операнды находятся непосредственно перед операцией.

Например, выражение

(6+8)*5-6/2

в польской инверсной записи имеет вид

6 8 + 5 * 6 2 / -

Особенность такой записи состоит в том, что значение выражения можно вычислить за один просмотр записи слева направо, используя стек, который до этого должен быть пуст. Каждое новое число заносится в стек, а операции выполняются над верхними элементами стека, заменяя эти элементы результатом операции. Для приведенного выражения динамика изменения стека будет иметь вид

S = < >; <6>; <6,8>; <14>; <14,5>; <70>;
<70,6>; <70,6,2>; <70,3>; <67>.

Ниже приведена функция eval, которая вычисляет значение выражения, заданного в массиве m в форме польской инверсной записи, причем m[i]>0 означает неотрицательное число, а значения m[i]<0 - операции. В качестве кодировки операций сложения, вычитания, умножения и деления выбраны отрицательные числа -1, -2, -3, -4. Для организации последовательного хранения стека используется внутренний массив stack. Параметрами функции являются входной массив a и его длина l.

Код
    float eval (float *m, int l)
    { int p,n,i;
      float stack[50],c;
       for(i=0; i < l ;i++)
       if ((n=m[i])<0)
         {  c=st[p--];
            switch(n)
            { case -1:  stack[p]+=c;  break;
              case -2:  stack[p]-=c;  break;
              case -3:  stack[p]*=c;  break;
              case -4:  stack[p]/=c;
            }
         }
       else stack[++p]=n;
       return(stack[p]);
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru