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

Написать строковый калькулятор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Бинарное дерево поиска http://www.cyberforum.ru/cpp-beginners/thread837092.html
Пишу программу - Бинарное дерево поиска для Bag class. Заголовочный файл: #ifndef BAG6_H #define BAG6_H #include <cstdlib> // Provides NULL and size_t #include "bintree.h" // Provides binary_tree_node and related functions namespace main_savitch_10
C++ Перегрузка оператора умножения числа на матрицу Доброго дня суток. Хочу перегрузить оператор умножение числа на матрицу. Перегрузил сначала в классе вот так: matrix operator*(const double ); а вне класса(в том же хидере) написал вот так: matrix operator*(const double & arg_double, const matrix & arg_matrix) { return ((arg_matrix)*(arg_double)); } VS ругается,что нету оператора "*" для таких типов. http://www.cyberforum.ru/cpp-beginners/thread837071.html
Некорректность работы программы при считывании текстовых данных с файла C++
Здравствуйте!) Помогите, пожалуйста, решить данную проблему... Почему при следующем варианте кода, программа просто-напросто не работает и вылетает. В чём ошибка при считывании? Подскажите, пожалуйста #include "stdafx.h" #include "iostream" #include <fstream> #include <conio.h> #include <string> #include <locale.h>
Работа с tinyxml ошибки LNK 2019 и LNK 2001 C++
всем привет! скачал архив tinyxml, разархивировал в папку проекта затем написал следующий код: #include "stdafx.h" #include "tinyxml/tinyxml.h" #include <iostream> int _tmain(int argc, _TCHAR* argv) {
C++ Узнать указывает ли указатель http://www.cyberforum.ru/cpp-beginners/thread837020.html
Доброго времени суток. Постановка задачи такова: есть указатель на массив, надо удалить массив, а потом создать новый, но не ясно указывает ли указатель уже куда-то. Как с этим побороться? Спасибо!
C++ Сортировка Нужно написать алгоритмы для Selection, Insertion, Shell, Quick, Merge, Heap сортировок для любых типов данных. Например, сравнить машины и их объемы двигателей. Сам начинающий, не знаю, как сделать. Может кто-то помочь написать любой алгоритм для примера? подробнее

Показать сообщение отдельно
AnyOne697
 Аватар для AnyOne697
134 / 106 / 5
Регистрация: 22.05.2010
Сообщений: 532
14.04.2013, 03:11     Написать строковый калькулятор
Rifle и _Simpson правильно говорят.
Разве только я бы делал через дерево или очередь.
Почему? Потому что так удобнее держать единственное результирующее значение, а юзая рекурсию вообще получаем едва ли не бесплатный калькулятор. Правда стек и реализует рекурсию более эффектино, придётся немного подумать. Да и очередь почти одно и тоже даст. А так, я вижу примерно такое:
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
#include ...
 
using ...
 
enum Operator ( sum, substract, mult, div );
 
int count ( string expression, Operator op = sum ) { // op is 'operator'
    stringList splits = expression.split ( op )
    if ( stringList.count == 1 ) {
        return parseInt ( stringList[ 0 ] );
    }
    int res = ( op == sum || op == substract ? 0 : 1 );
    foreach ( string &s in splits ) {
        if ( op == sum || op == substract ) {
            res += ( op == substract ? -1 : 1 ) * count ( s );
        } else if ( op == mult ) {
            res *= count ( s );
        } else if ( op == div ) {
            res /= count ( s );
        }
    }
    
    return res;
}
 
int main ( int argc, char **argv ) {
    println ( "%d\n", count ( argv[ 1 ] ) );
    
    return 0;
}
Внимание! Компилировать никак не получиться, да и вообще стиль написания кода соответствует стилю написания кода в 2 часа ночи в перерывах между ходами в HoMM4 и почитывания хабры, так что "казнить нельзя, помиловать".
Алсо, здесь потребуется много чего реализовать. То как доделать класс std::string, сделать класс StringList и так далее. Да и использовались плюшки из C++11.

Добавлено через 37 минут
Update:
Это рекурсия, но по сути она соответствует дереву. Работает через стек, конечно. Производительность пониже, но писать намного проще.

Добавлено через 1 минуту
Цитата Сообщение от cygwin Посмотреть сообщение
Вместо тысячи слов...
http://ru.wikipedia.org/wiki/%D0%9E%...B8%D1%81%D1%8C
Не, это не зергут. На wolframalpha.com так не издеваются, например.
 
Текущее время: 10:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru