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

Калькулятор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из delphi в С++: создать приложение, визуально демонстрирующее работу разных алгоритмов сортировки http://www.cyberforum.ru/cpp-beginners/thread927505.html
Задача: Методические рекомендации по лабораторной работе №2 Процессы. Потоки. Часть 1. Задача: создать многопотоковое приложение, в котором можно менять приоритеты потоков. Программа DreadedSorts создает два потока. Один поток запускает пузырьковую сортировку (bubble sort), другой – быструю сортировку (quick sort). С помощью соответствующих ползунков на главной форме можно изменять...
C++ Почему не добавляется элемент в вектор? продолжение этой темы, но с другой проблемой. http://www.cyberforum.ru/cpp-beginners/thread927463.html Пишу программу, которая принимает произвольное количество файлов с записями на вход и в конечном счете выводит эти записи отсортированные в последний принятый файл. Это неокончательный вариант программы, тут я пытаюсь загнать все записи в один контейнер-вектор. tempset заполняется нормально,... http://www.cyberforum.ru/cpp-beginners/thread927504.html
C++ умные указатели
у меня например есть куча юнитов, у каждого из них есть указатель на игровой ресурс (допустим камень). Есть такая задумка: когда камень иссякнет, юнит который истощил этот камень удаляет этот ресурс из памяти. Как сделать так чтобы при этом удалении все указатели указывающие на это камень обнулились?
Как эффективно изучать программирование? C++
Всем привет, хотелось бы услышать рекомендации по эффективному изучению языка C++. Изучаю его по книге Дейтелов, пишу и разбираю примеры из книги. Прошёл 7 глав, а дальше уже очень сложно понимать информацию. Осознаю, что теория это хорошо, но не хватает практических навыков. 1) Может нужно учить какие-то алгоритмы или разделы математики? Посоветуйте литературу. 2) Подскажите книгу, где есть...
C++ Виртуальные деструкторы http://www.cyberforum.ru/cpp-beginners/thread927487.html
Можно ли вызвать деструктор базового класса вместо использования виртуальных деструкторов? class CBase { public: CBase(const char *str1) { mStr1 = new char; strcpy(mStr1, str1); }
C++ Как обмануть указатель? Я бы хотел сделать так, чтобы функция my_function могла менять значение value, а alien_function - нет. Вносить изменения в код alien_function и Alien_class я не могу, поелику они написаны не мной. My_class { Alien_class value; } Alien_class my_function(Alien_class x) { } подробнее

Показать сообщение отдельно
ququ_smile
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 153
23.07.2013, 12:42     Калькулятор
В идеале, то что представлено ниже является калькулятором с 4-мя действиями (+,-,*,/) и с произвольным количеством переменных. Но вот не работает он : С. Он основан на примере из Страуструпа. Я над ним мучался и походу понял, что он все же считает, однако у меня небольшие проблемы с выходом из цикла. В общем, сначала мы вводим одно число, потом (уже в цикле) вводим знак, а следом за ним другое число. Потом они проходят волшебные манипуляции и складываются (или вычитаются или перемножаются или делятся). Но вот я не могу объяснить программе когда нужно остановиться. По-идее, когда у меня закончатся знаки и я нажму кнопку enter, я оставлю в потоке символ перехода на новую строку и должно среагировать условие default , которое выведет результат на экран и завершит программу(ну это как лично я понял механику этого кода). И вот как раз это условие default не проходит и собственно ничего не происходит, а точнее происходит - цикл возвращается к началу, хотя здесь мне это пока-что не надо.
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
#include <iostream>
#include <string>
#include <windows.h>
#include <cmath>
 
 void error(std::string s)
{
        std::cin.clear();
        std::cin.sync();
        std::cout<<s;
        exit(1);
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    double x1,x2;
    char op;
    std::cout<<"Введите выражение: "; //Приглашение на ввод
    std::cin>>x1;//            // ввод левого значения
    if(!std::cin) error("\nНет левого операнда\n\n");
    while (std::cin>>op)
    {
        std::cin>>x2; // ввод правого значения
        if(!std::cin) error("\nНет правого операнда\n\n");
 
            switch (op)
        {
            case '+' : x1+=x2;
            break;
 
            case '-' : x1-=x2;
            break;
 
            case '*' : x1*=x2;
            break;
 
            case '/' : x1/=x2;
            break;
 
            default :
            std::cout<<"Результат(в условии): "<<x1<<std::endl; // должен показывать конечный результат :)
            exit(0);
        }
        std::cout<<"Результат(в цикле): "<<x1<<std::endl; //показывает вычисления, за каждый проход цикла( т.е. за каждое действие)
    }
    std::cout<<"Epic win\n";
   // }
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru