![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 04.09.2011
Сообщений: 6
|
![]()
Пишу программу решающую химические уравнения, но столкнулся с такой ошибкой в алгоритме: при уравнивании сложных уравнений происходит зацикливание а отсюда переполнение типа => exitcode 215.
На простых уравнениях программа работала алгоритм работы: 1 формулы веществ заносятся в массивы( с этим проблем нет); 2 по порядку следования элементов в уравнении проверяется одинаковое ли количество элемента в правой и левой части; 3 если количество одинаковое берется следующий элемент(далее шаг 2) разное происходит уравнивание: Код:
в связи с тем что происходило зацикливание было добавлено определение порядка в котором элементы уравниваются(в первую очередь те которых меньше всего и далее по возрастанию количества): Код:
уравнивание происходит по принципу коэффициент каждого вещества содержащего данный элемент умножается на число полученное в результате процедуры уравнивания(для правой и левой части числа разные). Как исправить алгоритм чтобы не происходило зацикливание? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 03.06.2009
Сообщений: 1,869
|
![]()
если у Вас ищется общий множитель двух чисел, чтоб уравнять левую и правую части реакции, а эта процедура, думаю, там несомненно есть, то вот пример:
два числа: 6 и 8 - какой у них общий множитель: 6*8 = 48 - это самый простой ответ, но если подумать, то можно написать, что 24 (т.к. 8*3=24 и 6*4=24), т.е. если вы в программе сделаете дополнительно небольшую проверку своих коэффициентов, то они, скорее всего, не будут большими числами и программа не будет зависать. вы пробовали сначала решить сложную реакцию на бумаге и потом лишь задать её программе? такие же цифры получаются?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
Последний раз редактировалось NetSpace; 05.09.2011 в 00:09. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм TMDS (Алгоритм передачи данных интерфейса DVI) | Pro4RE | Помощь студентам | 2 | 24.04.2011 21:55 |
Алгоритм | Eugene_Brikov | Помощь студентам | 0 | 17.04.2011 10:59 |
Волновой алгоритм (алгоритм Ли) | MrRockchip | Общие вопросы C/C++ | 4 | 10.05.2010 13:26 |
Алгоритм | JoSkream | Общие вопросы C/C++ | 5 | 04.06.2009 23:22 |