Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод математической функции в edit box 
:(
    Опции темы
Toyamatokanava
Дата 5.5.2014, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.10.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



С помощью примеров nehe написал код, который строит график функций. Решил создать еще Edit box для ввода названия функции и столкнулся с проблемой как это сделать? Попробовал читать из edita строку и переводить её в float, но получается,  что читается только обычные числа. Не буду приводить всю программу, приведу только ключевые моменты.
Построение графика:
Код

BOOL DrawGLScene(GLvoid)
{
    i = 0;
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // очистка Экрана и буфера глубины
    glLoadIdentity();
    // Сброс просмотра
    glTranslatef(0.0f, 0.0f, -6.0f);
    glLineWidth(1.0f);
    glColor3f(1.0f, 1.0f, 1.0f);
    glBegin(GL_LINES);
    glColor3f(1.0f, 0.0f, 0.0f);
    //ось Y
    glVertex2f(0.0f, 10.0f);
    glVertex2f(0.0f, -10.0f);
    //ось X
    glVertex2f(10.0f, 0.0f);
    glVertex2f(-10.0f, 0.0f);
    glEnd();
    glPointSize(2);
    glBegin(GL_POINTS);
        glColor3f(0.0f, 0.0f, 0.0f);
    for (x = -50; x <= 50; x=x+0.01)
    {
        k = atof(str);
        y = k;
        glVertex2f(x, y);
    }
    glEnd();
    return true;
}




Создания edita обработка сообщений от него по нажатию кнопки.
Код

case WM_COMMAND:
        if (LOWORD(wParam) == 10000)
        {
                GetDlgItemText(hWnd, 0, str, sizeof(str));
        }
        break;
    case WM_CREATE:
        h = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", "", WS_CHILD | WS_VISIBLE | ES_RIGHT,
            10, 60, 80, 30, hWnd, 0, hInstance, NULL);

        break;

PM MAIL   Вверх
xvr
Дата 5.5.2014, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Toyamatokanava @  5.5.2014,  16:55 Найти цитируемый пост)
Попробовал читать из edita строку и переводить её в float, но получается,  что читается только обычные числа.

Гм, а что вы ожидали увидеть от -
Цитата(Toyamatokanava @  5.5.2014,  16:55 Найти цитируемый пост)
        k = atof(str);
? Функция atof и переводит из строки в float 'только обычные числа'. 
Если вы ожидаете в str формулу с участием x, то вам нужен интерпретатор, а это уже за рамками стандартного С/С++


PM MAIL   Вверх
Toyamatokanava
Дата 5.5.2014, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 29.10.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Подскажите хорошие статьи на  тему интерпретаторов.
PM MAIL   Вверх
xvr
Дата 6.5.2014, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(Toyamatokanava @  5.5.2014,  18:50 Найти цитируемый пост)
Подскажите хорошие статьи на  тему интерпретаторов. 

Конкретно по интерпретаторам мне статей не встречалось. По построению компилятором (и как частный случай интерпретаторов) есть классическая книга Ахо и Ульмана - Компиляторы: принципы, технологии и инструменты (она же 'Dragon book'). Но если вам надо по быстрому просто посчитать формулу я ее читать не рекомендую (там более 1000 страниц), просто возьмите готовый интерпретатор - их вагон и маленькая тележка: Lua, JS, picoc, uBASIC.
Или напишите сами на Bison'е (У него в документации есть готовый интерпретатор и вот еще один)



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.