0 / 0 / 0
Регистрация: 25.12.2017
Сообщений: 3
1

Подскажите идею алгоритма

06.01.2018, 23:32. Показов 511. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, основную идею алгоритма. Желательно по шагам.
Реализацию необязательно.

Задача: Построить график функции, введенной пользователем.

Вводится, например, y = 2*x + 10
нужно определить иксы и игреки.

заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.01.2018, 23:32
Ответы с готовыми решениями:

Подскажите идею
Нужна идея для создания программы. Концепция такая: создать программу используя класс, содержащий...

Подскажите идею
:) Подскажите пожалуйста идею программы, что то чтоб использовала базу данных) Оч хочу написать что...

на системы счисления. подскажите идею решения
Сколько существует натуральных чисел,меньших 81 (10), таких, чт в ихзаписи в троичной системе...

Подскажите идею для курсовой
Доброго времени суток, нужно придумать тему для курсовой, но моего воображения не хватает, поэтому...

4
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
06.01.2018, 23:51 2
mist_leet,
нужно определить иксы и игреки.
В смысле задать набор точек?
0
0 / 0 / 0
Регистрация: 25.12.2017
Сообщений: 3
07.01.2018, 00:32  [ТС] 3
заданы иксы, например, от 0 до 100
нужно определить игреки
0
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
07.01.2018, 01:20 4
Для начала тебе необходимо распарсить то, что ввел пользователь в виде строки. Делать это можно различными способами, я бы попытался делать с помощью грамматик. У Страуструпа в книге рассматривается применение грамматик на основе построения калькулятора, есть еще книга с драконом.
При разборе строки нужно выделить переменные функции и проверить их количество и т.д. В случае, если все ок и пользователь кроме цифр ввел только лишь х и у, то необходимо перейти к вычислениям и подставлять вместо х новые значения всегда, запоминая получившиеся значения у в массив. После чего можно строить прямую.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
07.01.2018, 01:40 5
Цитата Сообщение от mist_leet Посмотреть сообщение
Задача: Построить график функции, введенной пользователем.
Функции введенной как?
1) Как удобно программисту. Берем польскую запись и собираем парсер выражения за пять минут на коленке. Просто как три копейки. Главное не слушать наркоманов которые будут учить вас обратной польской и ручной реализации операций со стеком. Но запись выражения весьма непривычна.
2) Как удобно пользователю. Представьте выражение в форме дерева узлами которого являются математические операции. Ну а дочерними деревьями - аргументы этих самых операций. Черновик накидал, парсер к нему сами дописывайте.
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
int polishNotation(const char*&str)
{
    switch(*str)
    {
    case'+':
        return polishNotation(++str)+polishNotation(str);
    case'*':
        return polishNotation(++str)*polishNotation(str);
    default:
        return strtol(str,(char**)&str,10);
    }
}
 
class Expression
{
public:
    virtual int calculate()const{return right->calculate();}
    virtual int priority()const{return 0;}
    void append(Expression*expr)
    {
        if(!right)
            right=expr;
        else if(right->priority()>expr->priority())
        {
            expr->left=right;
            right=expr;
        }else
            right->append(expr);
    }
 
    Expression*left=nullptr;
    Expression*right=nullptr;
};
 
class Plus:public Expression
{
public:
    int calculate()const{return left->calculate()+right->calculate();}
    int priority()const{return 1;}
};
 
class Mul:public Expression
{
public:
    int calculate()const{return left->calculate()*right->calculate();}
    int priority()const{return 2;}
};
 
class Const:public Expression
{
public:
    Const(int _value):value(_value){}
    int calculate()const{return value;}
    int priority()const{return 3;}
    int value;
};
 
int main()
{
    const char*str="+*2 2 2";
    //2+2*2. Да, тупо вбиваем все попорядку
    Expression root;
    root.append(new Const(2));
    root.append(new Plus);
    root.append(new Const(2));
    root.append(new Mul);
    root.append(new Const(2));
    std::cout<<polishNotation(str)<<std::endl;
    std::cout<<root.calculate()<<std::endl;
    return 0;
}
0
07.01.2018, 01:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.01.2018, 01:40
Помогаю со студенческими работами здесь

Подскажите идею для онлайн алгоритма
Здравствуйте. Программирую как хобби алгоритмы (математика и не только). Сейчас задумался над...

Подскажите идею
Всем привет. У меня есть база данных которая хранит некоторую информацию, среди которой есть...

Подскажите идею
Добрый день, учимся в колледже и нас как говориться добровольно-принудительно заставили...

подскажите идею
есть мемо в которое вводится какой-то текст этот текст передается в виде строки как поделить эту...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru