Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Небольшой вопрос по C#. Проблемы с вводом... 
V
    Опции темы
MCMK
Дата 12.5.2006, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.5.2006

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



Доброго времени суток!

Вопрос следующий: 
Необходима программа для решения интегралов. Решение в консольном приложении написал. Но это все необходимо сделать на форме. Как я представил это - textBox для ввода самого подынтегрального уравнения, кнопочка для решения и например label для вывода ответа... 
  В итоге столкнулся с проблемой: Не могу организовать ввод с помощью textBox. Т.е. не могу сделать так, чтобы  программа распознавала введенное не как обычный текст, а как уравнение... 
Надеюсь понятно объяснил. Если нет, постараюсь еще раз, только скажите... (язык C#)

Заранее спасибо!  

smile 

 
PM MAIL   Вверх
ivashkanet
Дата 12.5.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(MCMK @  12.5.2006,  10:57 Найти цитируемый пост)
 Т.е. не могу сделать так, чтобы  программа распознавала введенное не как обычный текст, а как уравнение... 

А в консоли ты это сделал???
ИМХО, тут так же будет.
P.S. Код в студию 
PM MAIL WWW ICQ   Вверх
MCMK
Дата 12.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.5.2006

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



В консоли задается в самом тексте программы, а не вводиться smile

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


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(MCMK @  12.5.2006,  12:09 Найти цитируемый пост)
В консоли задается в самом тексте программы, а не вводиться

Ах, так...
Тогда придется анализироватьтекстовую строку и вытаскивать из нее функцию.
Даже не знаю чем тебе помочь  smile 
Дело это довольно таки трудоемкое, ИМХО. smile 
Хотя я могу ошибаться smile  
PM MAIL WWW ICQ   Вверх
MCMK
Дата 12.5.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.5.2006

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



Надеюсь на твою последнюю строку! smile

Хотелось бы услышать еще советы! 
PM MAIL   Вверх
MFSham
Дата 12.5.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.8.2005
Где: Беларусь, Гродно

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



Когда я делал что-то подобное, то реализовывал этот метод
http://algolist.manual.ru/syntax/revpn.php
Только мне надо было не интеграл, а просто решить уравнение. В твоем случае этот метод будет ресурсоемкий, т.к. каждый раз придется анализировать строку при изменении аргумента. 
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
MCMK
Дата 12.5.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.5.2006

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



MFSham, Спасибо!

Это единственный способ???  smile  
PM MAIL   Вверх
Void
Дата 12.5.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Цитата(MFSham @  12.5.2006,  15:44 Найти цитируемый пост)
В твоем случае этот метод будет ресурсоемкий, т.к. каждый раз придется анализировать строку при изменении аргумента.

Один раз генерируем в байт-код простейшей стековой машины, потом функция вычисляется существенно быстрее. Можно еще сгенерить метод с помощью System.Reflection.Emit.
MCMK, собственно, если интеграл берется численно, то берем библиотечку вычисления выражений в рантайме с CodeProject или любую другую, что найдет Google. Если аналитически — проблема крайне сложная, и разбор выражения в AST будет самой простой задачей. 

Это сообщение отредактировал(а) Void - 12.5.2006, 19:45


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
ivashkanet
Дата 12.5.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

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



Цитата(MCMK @  12.5.2006,  19:20 Найти цитируемый пост)
Это единственный способ???

В любом случае нужно делать анализ строки, этот, ИМХО, неплохой.
Можешь поискать готовый алгоритм на C#.
Где не знаю  smile  
PM MAIL WWW ICQ   Вверх
MFSham
Дата 12.5.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.8.2005
Где: Беларусь, Гродно

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



Еще можно представить строку в виде дерева. Этот вариант будет намного лучше, т.к. дерево строится только один раз. 
Сам не реализовывал. Попробуй на бумажке представить функцию в виде дерева, думаю алгоритм поймешь сам. 
--------------------
Без ветра трава неподвижна. Без программ компьютеры бесполезны.
PM MAIL   Вверх
Void
Дата 12.5.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



Кстати, можно взять еще Spart (аналог Boost.Spirit на C#). Полноценный генератор парсеров вроде Coco/R в данном случае, имхо, overkill. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
MCMK
Дата 12.5.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 12.5.2006

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



Спасибо всем огромное!!!

Буду ковырять...   smile  
PM MAIL   Вверх
ffldove
Дата 16.5.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.5.2006

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



подскажите что-то неправильно в class что именно как ввести с клавиатуры n если можно пишите на мыло [email protected]
Код
#include <iostream.h>
class object
{  
int n;
double a[n];
double m[n][n];
public:
object (int);
~object();
void postr();
void vv();
void viv();
};
object::object(int l)
{
cin>>l;
n=new int l;
}
void vv()
{
for (int i=0;i<n;i++)
for (int o=0;o<n;o++)
cin>>l.m[i][o];
}
void postr()
{
int i,l;
i=0;
l=0;
for (i=0;i<n;i++)
{
if (m[i][i]<0) while (m[i][l]>0)
{
a[i]=m[i][l];
l++;
}
else
for (int j=i;j<n;j++)
if (m[i][j]>0) a[i]=m[i][j];
}
}
void main ()
{
object l;
l.vv();
l.postr();
l.viv();
}
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

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


 




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


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

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