![]() |
|
![]() ![]() ![]() |
|
H0Jlb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
Вообщем есть такая система или способ записи - Польская.
Например: a*(k+l) Прямая Польская система: *a+kl Обратная Польская система: kl+a* Я реализовал Обратную польскую систему через стек и потом инвертировал чтоб сделять прямую. Но гдето оишбка сам найти не могу. Я сделал более менее понятные переменные если чтото не понятно я попробую написать подробней.
Это сообщение отредактировал(а) H0Jlb - 22.4.2010, 07:41 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
"Где-то ошибки" ищутся так: сначала руками прописываешь по шагам весь процесс для тестового примера. Потом повторяешь его с помощью отладчика и ищешь разницу. А кто за тебя будет это делать?
-------------------- ... |
|||
|
||||
H0Jlb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
Спасибо за совет. Я нашел ошибку нереализованны скобки. Пока не пишите исправлю покажу.
Это сообщение отредактировал(а) H0Jlb - 22.4.2010, 07:43 |
|||
|
||||
H0Jlb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
Переделал но теперь вообще не выводит ничего. Почему то там где if и сравнение с '1' он пропускает (false) и не хочет делать подпрограммую(
Это сообщение отредактировал(а) H0Jlb - 20.5.2010, 08:57 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
H0Jlb, что значит "почему-то"? Нет такого слова в лексиконе программиста.
Поставь точку прерывания на это условие и смотри значения переменных. -------------------- ... |
|||
|
||||
H0Jlb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
Я смотрел Весь массив P3 обнулен, он доходит да места условия и сразу прыгает на второй счетчик .(
Не совсем понимаю разницу между ' ' и " ". Вот при зацыкливании он выдает сообщение и можно пото поглядеть в какой переменной какое значение, а при отладки нет. НАверно надо какуето закладку включить? Я непонимаю. Компилятор со строчки for сразу прыгает на второй for . (P3 проверил там все нули.) Это сообщение отредактировал(а) H0Jlb - 20.5.2010, 13:03 |
|||
|
||||
Albor |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 7 Всего: 9 |
H0Jlb, у тебя код вообще какой-то замороченный. Вот здесь:
зачем запихиваешь в стек счётчик цикла? Добавлено через 8 минут и 20 секунд Вот здесь выход за пределы массива
У тебя 20 элементов в массиве i+1 в начале работы цикла лезет не в свою память. |
||||
|
|||||
H0Jlb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 18.2.2010 Репутация: нет Всего: нет |
1. Я записываю адреса скобок чтобы связать их, то есть я каждое "(" связываю с каждым ")".
2. Ага спасибо щя исправлю, но я думаю ошибка тут не в этом .( Исправил проблема все таже. Щяс я объясню в крации. Сначало я связываю пложение скобок "(" ")" . Затем начанаю с внутренних скобок компоновать уже польскую запись, по мере перебора скобок я должен сделать так чтобы то что в нутри придыдущих скобок программа не счетала (ввел массив P3 длинной как выражение P1 и каждый раз как я уже записал положение из выражения я записываю в те позиции "1" для этого и нужен if ). Затем я просто через отрицательный счетчик вывожу на экран все да наоборот и получаю обратную польскую запись ) насчет стеков. например (a+s * ( d - f / ( f + e - ( h + y ) - o ) + t ) - q)= Делается вот как (позиции с лево на право начиная с нуля. 1. стек (0) стек1 () 2. стек (5,0) стек1 () 3. стек (10,5,0) стек1 () 4. стек (15,10,5,0) стек1 () 5. стек (10,5,0) стек1(15,19) 6. стек (5,0) стек1 (10,22,15,19) 7. стек (0) стек1 (5,25,10,22,15,19) 8. стек () стек1 (0,28,10,22,15,19) Вааааа нашел ошибку пошел исправлять ;) p.s. Спасибо за вопрос со стеком ![]() Ошибку исправил легче не стало. (Я делал цыкл не от "(" до ")",а наоборот) ![]() Вот как сейчас.
Это сообщение отредактировал(а) H0Jlb - 20.5.2010, 18:40 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |