Александровский форум https://icmsystem.ru/forum/ |
|
Решение уравнений в visual basic https://icmsystem.ru/forum/viewtopic.php?f=7&t=433 |
Страница 1 из 1 |
Автор: | AntiRSI2 [ 23 мар 2009, 12:57 ] |
Заголовок сообщения: | Решение уравнений в visual basic |
Нужно написать программу на visual basic, которая будет решать уравнения. В принципе это легко, вот только не могу понять как сделать чтобы автоматически определялось, какое это уравнение- линейное, квадратное, кубическое и т.д. для того чтобы опередить тип решения?! + как можно сделать, к примеру квадратное: a*x^2+b*x+c=0 чтобы определяло, где а, а где b , и где с, в нем (уравнение записывается в одной строчке) |
Автор: | Vas [ 23 мар 2009, 14:51 ] |
Заголовок сообщения: | |
Парсить |
Автор: | MARK II [ 23 мар 2009, 16:39 ] |
Заголовок сообщения: | |
Vas писал(а): Парсить а можно расшифровать словечко?
|
Автор: | AntiRSI2 [ 23 мар 2009, 17:00 ] |
Заголовок сообщения: | |
MARK II писал(а): Vas писал(а): Парсить а можно расшифровать словечко?"Под парсингом обычно понимается синтаксический (грамматический или лексический) анализ текста или вообще любой последовательности лексем (символов, слов, байт итп.), в результате которого входной текст проверяется на соответствие заданной грамматике и получается дерево разбора, по которому уже можно выполнять дальнейшие вычисления или преобразования." Vas писал(а): Парсить
а можно по подробнее? |
Автор: | Vas [ 23 мар 2009, 17:10 ] |
Заголовок сообщения: | |
Берешь первый символ смотришь число это или переменная, если число читаешь второй и аналогично, если умножить, то запоминаешь а=полученному числу и так далее. Потом смотришь какая степень максимальная и добавляешь недостающие переменные и начинаешь выбирать каким способом решать (кубическое, квадратное, линейное или вообще не в дугу такое тоже может быть). НУ и собсно по алгоритму решаешь. |
Автор: | AntiRSI2 [ 24 мар 2009, 13:08 ] |
Заголовок сообщения: | |
Vas писал(а): Берешь первый символ смотришь число это или переменная, если число читаешь второй и аналогично, если умножить, то запоминаешь а=полученному числу и так далее. Потом смотришь какая степень максимальная и добавляешь недостающие переменные и начинаешь выбирать каким способом решать (кубическое, квадратное, линейное или вообще не в дугу такое тоже может быть). НУ и собсно по алгоритму решаешь.
Vas, спасибо за подсказку. Нахождение максимальной степени сделал, вот теперь нужно опеределять числа, но не пойму как можно сделать, чтобы он отличал числа от переменных и знаков?! не подскажешь? Или просто сделать условие, а затем считывать по одному символу, и если это не 0 или 1, или 3 ...9, то запоминать полученное число и переходить дальше?! |
Автор: | Vas [ 24 мар 2009, 15:41 ] |
Заголовок сообщения: | |
AntiRSI2 писал(а): Или просто сделать условие, а затем считывать по одному символу, и если это не 0 или 1, или 3 ...9, то запоминать полученное число и переходить дальше?!
Берешь один символ и смотришь входит ли он в множество чисел от 0 до 9 Код: if str[i] in [0..9] then
цифра else буква что то типа такого. Потом второй знак, если число то плюсуешь первый символ и второй как строки, а потом когда встретил знак (+,-,*,/) то пробуешь полученную до этого строку переводить в число, если без ошибки то заносишь куда нибудь в массив и дальше по уравнению. Кстати делать все надо в рекурсии (хотя можно и без нее), знаешь что то такое? |
Автор: | AntiRSI2 [ 24 мар 2009, 16:47 ] |
Заголовок сообщения: | |
Цитата: Кстати делать все надо в рекурсии (хотя можно и без нее), знаешь что то такое?
Посмотрел в википэдии - "В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная рекурсия), например, функция A вызывает функцию B, а функция B — функцию A." Ток не пойму, а для чего она в моем случае?! |
Автор: | Vas [ 24 мар 2009, 21:34 ] |
Заголовок сообщения: | |
Функция определения что за символ как минимум, передаем начало строки возвращаем тип полученного значение (переменная, коэффициенты) и выход из нее как только начальный символ больше либо равен длинне уравнения. Это универсально, не заморачивайся делай в цикле. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |