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

Не могу отловить крайние случаи - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание тестовой оболочки http://www.cyberforum.ru/cpp-beginners/thread1541647.html
Доброго времени суток. Хочу создать тестовую оболочку. Подскажите с чего начать. P.S: Без троллинга, помогите добрые люди
C++ Вычисление функции разложением в ряд Тейлора Дано вещественное число X и целое число N (> 0). Найти значение выражения X − X3/(3!) + X5/(5!) − … + (−1)N·X2·N+1/((2·N+1)!) x-\frac{{x}^{3}}{3!}+\frac{{x}^{5}}{5!}+...+\frac{{-1}^{N}{x}^{2N+1}}{(2N+1)!} (N! = 1·2·…·N). Полученное число является приближенным значением функции sin в точке X. через FOR помогите очень нужно буду благодарен http://www.cyberforum.ru/cpp-beginners/thread1541644.html
Ввести число и номер месяца. Напечатать дату прописью C++
Ввести число и номер месяца. Напечатать дату прописью. Как можно это реализовать?
C++ Что такое "эхо печать"? И как через такую печать сделать калькулятор?
Само задание такое: Создать программу-калькулятор, обеспечивающую ввод с клавиатуры в режиме эхо-печати только цифр, а также обработку нажатия клавиш +, -, *,/ с помощью акселераторов. Я не пойму фразу "ввод с клавиатуры в режиме эхо-печати". Что она означает? Гугл упорно суёт мне PHP. Но мне надо сделать на C++ (Win API). Что такое эхо-печать?
C++ Aapt.exe could not be found http://www.cyberforum.ru/cpp-beginners/thread1541611.html
Установил vs 14, доустановил ndk в нем же, создаю стандартный проект "Hello world", собираю, при попытке запустить появилась ошибка aapt.exe could not be found at ' ', потом постоянно при настройке проекта она постоянно вылетала. Может кто сталкивался с таким? Помогите если справились
C++ Переставить цифры местами так, чтобы получилось большее число Дано число. Если можно переставить его цифры так, чтобы получилось большее число, выведите YES, в противном случае выведите NO. Например, в числе 3112 можно переставить цифры и получить 3211, подробнее

Показать сообщение отдельно
oPean
0 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 46
08.10.2015, 20:17  [ТС]     Не могу отловить крайние случаи
Я, наверное, ещё не раз достану с этим курсом=)
Задание:
Кликните здесь для просмотра всего текста
Ваш класс должен печатать (используя std::cout) текстовое представление арифметического выражения. Т.е. для объекта класса Number он должен напечатать число, которое в нем хранится, а для объекта класса BinaryOperation он должен напечатать левый операнд, затем операцию, а затем правый операнд.

Учтите, что операции + и - имеют меньший приоритет, чем операции * и /, т. е. возможно вам придется печатать дополнительные круглые скобки, чтобы сохранить правильный порядок операций.

Классы иерархии Expression и абстрактный класс Visitor приведены в комментарии в шаблоне для удобства.

При проверке задания лишние пробелы или лишние скобки будут игнорироваться, т.е. вывод "1+2" эквивалентен выводу "( ( 1 ) + ( 2 ) )", а вот вывод "1 + 2 * 3" не эквивалентен выводу "((1 + 2) * 3)". Вы можете попытаться минимизировать количество скобок в выводе, но это не требуется.

Требования к реализации: при выполнении задания вы можете заводить любые вспомогательные классы или функции, но не нужно реализовывать функцию main или менять реализацию классов иерархии Expression.


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
/*
struct Number;
struct BinaryOperation;
 
struct Visitor {
    virtual void visitNumber(Number const * number) = 0;
    virtual void visitBinaryOperation(BinaryOperation const * operation) = 0;
    virtual ~Visitor() { }
};
 
struct Expression
{
    virtual double evaluate() const = 0;
    virtual void visit(Visitor * vistitor) const = 0;
    virtual ~Expression();
};
 
struct Number : Expression
{
    Number(double value);
    double evaluate() const;
 
    double get_value() const { return value; }
 
    void visit(Visitor * visitor) const { visitor->visitNumber(this); }
 
private:
    double value;
};
 
struct BinaryOperation : Expression
{
    BinaryOperation(Expression const * left, char op, Expression const * right);
    ~BinaryOperation();
    double evaluate() const;
 
    Expression const * get_left() const { return left; }
    Expression const * get_right() const { return right; }
    char get_op() const { return op; }
 
    void visit(Visitor * visitor) const { visitor->visitBinaryOperation(this); }
 
private:
    Expression const * left;
    Expression const * right;
    char op;
};
*/
 
#include <iostream>
 
/* Этот класс вам нужно реализовать */
struct PrintVisitor : Visitor {
    void visitNumber(Number const * number)
    {
       std::cout << number->get_value() << " ";
    }
 
    void visitBinaryOperation(BinaryOperation const * bop)
    {
        bop->get_left()->visit(this);
        std::cout << '(' << bop->get_left() << bop->get_op() << bop->get_right() << ')' << " ";
        bop->get_right()->visit(this);
    }
};
То, что не закоменчено - моих рук дело, остальное "шаблон". Решение не принимается, но я не могу протестить, чтобы посмотреть что не так.
Пишу в main, например
C++
1
Number *n = new Number(32.0);
и VS2012 выдает ошибку линковщика "ссылка на неразрешенный внешний символ "public: __thiscall Number::Number(double)" (??0Number@@QAE@N@Z) в функции _main".
Я так почитал в интернете, походу дело даже не в коде, а что то с настройкой VS. Но не уверен. Подскажите, пожалуйста, в чем дело.
 
Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru