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

Обратная польская нотация - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать функцию в программе http://www.cyberforum.ru/cpp-beginners/thread917238.html
#include <iostream> #include <fstream> #include <stdio.h> #include <cstring> #include <conio.h> using namespace std; int main() { setlocale(LC_ALL,"Russian"); char c; FILE *fin;
C++ Метод гаусса не правильно сделал прогу В файле data.dat мы записываем такие значения a= 1.0; a=-3.0; a= 2.0; b = 7.0; a= 4.0; a= 6.0; a= 1.0; b = 3.0; http://www.cyberforum.ru/cpp-beginners/thread917212.html
Все время программировали на Pascal, а тут бац, и программируйте на С++ или вам "конец"! C++
Задание 1 Разработать программу обработки массивов Подпрограмма должна находить сумму положительных элементов нечетных строк матрицы tyr размером t*n 1. Просто 2 суток уже сижу и фигею.Кто может чем помочь?
добиться того, чтобы все нулевые элементы располагались на главной диагонали C++
Прошу помочь:) С помощью перестановки строк матрицы добиться того, чтобы все нулевые элементы располагались на главной диагонали (дополнительных векторов и матриц не использовать)
C++ Проблемы с программой http://www.cyberforum.ru/cpp-beginners/thread917188.html
Сегодня начал изучать С++ по книжке Джесс Либерти "C++ за 21 день" и при написании первой же программы при компиляции программа мне выдаёт ошибку. Программа Dev-C++ v 4.9.9.2. \Users\ADMIN\Documents\hello world.cpp C:\Users\ADMIN\Documents\C iosream.h: No such file or directory. C:\Users\ADMIN\Documents\hello world.cpp In function `int main()': 5 C:\Users\ADMIN\Documents\hello world.cpp...
C++ Зацикливается. Надо исправить Программу я пишу очень известную здесь на форуме: Описать структуру с именем ZNAK, содержащую следующие поля: Фамилия, имя; Знак Зодиака; Дата рождения (массив из трёх чисел). Написать программу, выполняющую следующие действия (действия оформить в виде подпрограмм): Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа ZNAK; записи должны быть упорядочены по знакам... подробнее

Показать сообщение отдельно
raaawr
0 / 0 / 0
Регистрация: 20.09.2012
Сообщений: 40
03.07.2013, 21:29     Обратная польская нотация
Доброго времени суток, форумчане! В общем, такая проблема: написал алгоритм приведения введенного арифметического выражения к виду, соответствующему его обратной польской записи, дело в том, что результат в выходной строке делится пробелами посимвольно, а не по числам/знакам, как хотелось бы. Голова уже кипит, и ведь очевидно, что "истина где-то рядом", но реализовать не получается
т.е. я ввожу 22+2, на выходе вместо 22 2 + получаю 2 2 2 +, что не есть хорошо, помогите, пожалуйста, разобраться
заранее спасибо!
C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <iostream>
#include "string.h"
#include "ctype.h"
 
using namespace std;
 
char stack[50], opz[50], sp=0;
int prior(char ch){
   switch (ch){
   case '(': return 0;
   case ')': return 1;
   case '+': case '-': return 2;
   case '*': case '/': return 3;
   case ' ': return 4;
   default: if (isalnum(ch))
          return -1;
          else return 5;
   }
}
int get_token(){
   static int i=0;
   char ch;
   cin.get(ch);
   if (ch=='\n'){
      if (stack[i]!=' ')
         for(i; i>=0; i--){
 
            opz[sp++]=stack[i];
         }
      return 0;
   }
   switch (prior(ch)){
   case -1: {
       opz[sp++]=ch;
 
       return 1;
   }
   case 4: return 1;
   case 5: return -1;
   default:
      if (ch==')'){
         for (i; stack[i]!='('; i--) {
            opz[sp++]=stack[i];
            stack[i]=' ';
         }
        stack[i--]=' ';
      }
      else
         if (ch!='(' && stack[i]!=' ' && prior(ch)<=prior(stack[i])){
            int fl=0;
            for(i; fl==0 && i>=0; i--){
               if (i!=0 && prior(stack[i-1])<prior(ch))
                  fl=1;
               opz[sp++]=stack[i];
            }
            stack[++i]=ch;
         }
         else
            if (stack[i]!=' ')
               stack[++i]=ch;
            else
               stack[i]=ch;
      return 1;
   }
}
int main(){
   int k;
   for (k=0; k<50; k++)
      stack[k]=' ';
   cout << "Enter string:\n";
   while (cin){
      k=get_token();
      if (k==0)
         break;
      if (k==-1) {
         cout<<"Error!";
         break;
      }
      else continue;
   }
 
   cout <<opz<<endl;
   return 0;
}
P.S. Пишу в Code::Blocks, С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru