Форум программистов, компьютерный форум, киберфорум
Наши страницы

Дерево разбора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ что-то не так http://www.cyberforum.ru/cpp-beginners/thread255764.html
в кои-то веки добился того что компилятор c-free не ругается на мой модуль.но использовать там я его не могу. решил запустить на visual studio. создал новый проект,в него отправил код из основной...
C++ считывание строки. С++ Строка считывается посимвольно буквами. а надо, чтобы словами.. как это сделать? FILE *fp2 = fopen("V.txt", "rb"); //открываем файл "dictionary.txt" fseek(fp2, 0, SEEK_END); ... http://www.cyberforum.ru/cpp-beginners/thread255758.html
Какое исключение возникает при невозможности открыть файл? C++
какое исключение отвечает за отсутствие файла?за невозможность открыть файл? FileNotFoundException?
Конструктор класса C++
Имеется: class block{ public: block(int, int); private: int CoordX; int CoordY; }; block::block(int X, int Y){ CoordX = X;
C++ Отсортировать методом выбора элементы тех строк матрицы, которые содержат символ "/" http://www.cyberforum.ru/cpp-beginners/thread255742.html
помогите пожалуйста сделать задачку: разработать приложение выполняющее след. функции:ввести с клавы значение элементов символьного двумерного массива , отсортировать по возростанию методом выбора...
C++ подскажите криворукому как правильно использовать команду ToolsAPI (библиотека для вызова, процесс, на который она ориентируется и т.д.; с примером, если не затруднит) и какой аналог для команды delay в С++ (опять же с... подробнее

Показать сообщение отдельно
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
12.03.2011, 04:37
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 <string>
#include <iostream>
#include <sstream>
#include <cassert>
 
enum Type{PLUS,MUL,VAL};
 
struct Node;
 
struct Node
{ 
   Type type;
   Node* left, *right;
   int data;
};
 
void recurs( std::string str, Node* node )
{
  
   int i, c; 
  
   std::cout << str << std::endl; 
   for( unsigned t = PLUS; t < VAL; ++t )
      for( i=0, c=0;i<str.size();++i )
      {
          if( '(' == str[i] )
            ++c;
          else if( ')' == str[i] )
            --c;
          else if( (t == PLUS ? '+' : '*') == str[i] && !c )
          {
            node->left = new Node;
            node->right = new Node; 
            node->type = static_cast<Type>( t ); 
            std::cout << ( node->type == PLUS ? "+" : "*" ) << std::endl; 
            recurs( str.substr( 0, i ), node->left );
            recurs( str.substr( i+1, str.size() - i ), node->right ); 
            return; 
          }        
      } 
     
   if( str[0] == '(' && str[str.size()-1] == ')' )
   { 
      recurs( str.substr( 1, str.size() - 2 ), node ); 
      return; 
   } 
     
   node->type = VAL;
   std::stringstream istr( std::stringstream::in | std::stringstream::out );
   istr << str;
   istr >> node->data; 
}
 
int recurs( Node* node )
{
  std::cout << "<<" << std::endl;
  int val = 0; 
  switch( node->type )
  {
    case PLUS:  
      val = recurs( node->left ) + recurs( node->right );
      break; 
    case MUL:
      val = recurs( node->left ) * recurs( node->right );  
      break; 
    case VAL:
      val = node->data;
      std::cout << "(" << val << ")" << std::endl;
      break; 
    default:
      assert( 0 );  
      return -1;  
  }   
  delete node; 
  return val; 
} 
 
int main()
{
   std::string str = "(((10+1)*(5+6*(3+1))+4*(3+1)))";
   Node* node = new Node;;
   recurs( str, node );
   std::cout << "result = " << recurs( node );  
}
Bash
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
(((10+1)*(5+6*(3+1))+4*(3+1)))
((10+1)*(5+6*(3+1))+4*(3+1))
(10+1)*(5+6*(3+1))+4*(3+1)
+
(10+1)*(5+6*(3+1))
*
(10+1)
10+1
+
10
1
(5+6*(3+1))
5+6*(3+1)
+
5
6*(3+1)
*
6
(3+1)
3+1
+
3
1
4*(3+1)
*
4
(3+1)
3+1
+
3
1
<<
<<
<<
<<
(10)
<<
(1)
<<
<<
(5)
<<
<<
(6)
<<
<<
(3)
<<
(1)
<<
<<
(4)
<<
<<
(3)
<<
(1)
result = 335
ух чет понесло
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.