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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ что-то не так http://www.cyberforum.ru/cpp-beginners/thread255764.html
в кои-то веки добился того что компилятор c-free не ругается на мой модуль.но использовать там я его не могу. решил запустить на visual studio. создал новый проект,в него отправил код из основной программы.потом надо было присоединить модуль.перенес файлы spisok.cpp и spisok.h в каталог с проектом. проект - добавить существующий объект - добавил и spisok.cpp и spisok.h.при компиляции выдает...
C++ считывание строки. С++ Строка считывается посимвольно буквами. а надо, чтобы словами.. как это сделать? FILE *fp2 = fopen("V.txt", "rb"); //открываем файл "dictionary.txt" fseek(fp2, 0, SEEK_END); //устанавливаем позицию от конца до нуля, находим размер long long size2 = ftell(fp2); //записываем размер исходного файла fseek(fp2, 0, SEEK_SET); //возвращаемся в начало ... 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 в С++ (опять же с примером желательно) заранее спасибо) подробнее

Показать сообщение отдельно
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.03.2011, 15:21  [ТС]     Дерево разбора
Нашел ошибочку...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Parser::create_tree(std::string& str)
{
        if(!lays_check(str))
                throw std::runtime_error("Expression is incorrect");
        std::string left;
        std::string right;
        std::pair<std::string, std::string> left_right=create_tree_helper(str, find_first_without_brakes);
        if(left_right.first.empty() && left_right.second.empty() && str.find('(') != std::string::npos)
        left_right=create_tree_helper(str, find_first_in_brakes);
        left=left_right.first;
        right=left_right.second;
        if(!left.empty())
                create_tree(left);
        if(!right.empty())
                create_tree(right);
}
Так, все работает нормально, ранее он вызывал и вторую функцию... Теперь все верно...

Только остается 1 вопрос, который я решить никак не могу... Ну допустим у нас есть дерево и функция insert в нем выглядит след. образом.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void tree_node::insert_h(T val_)
{
    if(left && val_ <= val)
       left->insert_h(val_);
    else if(!left && val_ <= val)
       left=new tree_node(val_);
    else if(right && val_ > val)
       right->insert_h(val_);
    else
       right=new tree_node(val_);
}
 
void tree::insert(T val_)
{
    !curr ? curr=new tree_node(val_) : curr->insert_h(val_);
}
Допустим есть структура Token с приоритетами.
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
class Token
{
public:
        Token(char c_='0', int t_=0, Prior::Priority pr_=Prior::one):
          c(c_), t(t_), pr(pr_)
        {
        }
        const char GetKind() const
        {
                return c;
        }
        const int GetNumb() const
        {
                return t;
        }
        const Prior::Priority GetPrior() const
        {
                return pr;
        }
private:
        int t;
        char c;
        Prior::Priority pr;
};
У каждого токена есть приоритет... Если оператор сравнения делать по приоритету, т.е.
C++
1
2
3
4
5
6
7
8
bool operator <(const Token& f, const Token& s)
{
    return f.GetPrior() < s.GetPrior();
}
bool operator <=(const Token& f, const Token& s)
{
    return f.GetPrior() <= s.GetPrior();
}
Допустим есть выражение
3+4*7-5
Имеем при такой вставке
__________+
_____3 ______*
___5____-
__4
_7

При приоритетах соответственно число - 1, + - 2, * - 3...
Следовательно не вариант... Вообщем я немного в ступоре...

Что можете подсказать по этому поводу?
 
Текущее время: 06:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru