Александровский форум
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 писал(а):
Парсить

а можно по подробнее? :oops: :)

Автор:  Vas [ 23 мар 2009, 17:10 ]
Заголовок сообщения: 

Берешь первый символ смотришь число это или переменная, если число читаешь второй и аналогично, если умножить, то запоминаешь а=полученному числу и так далее. Потом смотришь какая степень максимальная и добавляешь недостающие переменные и начинаешь выбирать каким способом решать (кубическое, квадратное, линейное или вообще не в дугу :) такое тоже может быть). НУ и собсно по алгоритму решаешь.

Автор:  AntiRSI2 [ 24 мар 2009, 13:08 ]
Заголовок сообщения: 

Vas писал(а):
Берешь первый символ смотришь число это или переменная, если число читаешь второй и аналогично, если умножить, то запоминаешь а=полученному числу и так далее. Потом смотришь какая степень максимальная и добавляешь недостающие переменные и начинаешь выбирать каким способом решать (кубическое, квадратное, линейное или вообще не в дугу :) такое тоже может быть). НУ и собсно по алгоритму решаешь.

Vas, спасибо за подсказку. Нахождение максимальной степени сделал, вот теперь нужно опеределять числа, но не пойму как можно сделать, чтобы он отличал числа от переменных и знаков?! не подскажешь? :oops: Или просто сделать условие, а затем считывать по одному символу, и если это не 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/