0 / 0 / 1
Регистрация: 16.11.2011
Сообщений: 10
|
||||||
1 | ||||||
Непонятные данные на выходе03.10.2013, 21:17. Показов 666. Ответов 6
Метки нет (Все метки)
Привет. Постигаю C++, сейчас изучаю классы. Написал программу реализующую банальный стек. Прога работает, но кроме нужных данных на экране появляются лишние. Вот что появляется в консоли:
-842150451 2 1 -33686019 133 1 400 Вот собственно код программы. Кликните здесь для просмотра всего текста
Заранее спасибо.
0
|
03.10.2013, 21:17 | |
Ответы с готовыми решениями:
6
На выходе выдаются непонятные символы Нужно заполнить и вывести массив (на выходе получается непонятные числа) Массив структур. Непонятные символы на выходе Serial port выдаёт непонятные данные |
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
|
|
03.10.2013, 21:37 | 3 |
Я не особо уверен в правильности инкремент и декремента указателя.
Вообще прямые арифметические действия с указателями не есть гуд. Т.к. вы выделяете под известный тип данных осуществляйте его индексацию как массива. Или уж если осуществляете арифметические операции я бы все же указывал точное число прибавления к адресу и не надеялся что операции инкремента и декремента прибавят или убавят соответствующую величину Добавлено через 5 минут И сдается мне вы попутали использовании поля end. У вас в алгоритме он используется как указатель на верхушку стека, но в то же время во всех проверках вы используете ее как индекс. Я вообще не пойму как программа работает. Точнее я понимаю почему результаты непонятные в работе программы
0
|
0 / 0 / 1
Регистрация: 16.11.2011
Сообщений: 10
|
|
03.10.2013, 21:42 [ТС] | 4 |
да, мне тоже кажется, что все дело в end дело в том, что в начале у меня end был просто переменной, не указателем. Потому я решил попробовать с использованием его в качестве указателя, но теперь получается вот такая фигня, а бэкапа у меня нет.
0
|
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
|
||||||
03.10.2013, 21:53 | 5 | |||||
Рассмотрим на примере.
По ходу выполнения программы. Это приводит к выполнению следующего кода Тут у нас получается выделяется память под 100 записей. Размер стека равен 100 и масс и ент указывают на верхушку стека. Далее идет код Это соответственно ведет нас к следующему коду. И с первых строк начинается
0
|
0 / 0 / 1
Регистрация: 16.11.2011
Сообщений: 10
|
|
03.10.2013, 21:54 [ТС] | 6 |
вы имеете в виду, что использую realloc?
Добавлено через 1 минуту Ладно, спасибо)) Завтра попробую переделать и отпишусь)
0
|
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
|
|
03.10.2013, 22:02 | 7 |
чем вам не нравился end как индекс для адресации вершины стека?
Пусть бы как был им так и остался. И получать значения стека как элементы массива уж точно не вызовет проблем с адресацией Добавлено через 1 минуту Я привел разбор для того, чтобы стало наглядно видно какая неразбериха получилась из за смешанной работой переменной end как указателя и индекса. Тут просто надо определиться чем она будет - указателем или индексом и только в таком виде ее и использовать Добавлено через 4 минуты кстати о realloc. Почитал описание чтобы не вспоминать а быть уверенным.
0
|
03.10.2013, 22:02 | |
03.10.2013, 22:02 | |
Помогаю со студенческими работами здесь
7
Работа с сокетами, получаю непонятные данные Восстановить данные с флешки непонятные кракозябрины Не сохраняются внесенные данные при выходе из формы Датчик температуры DS18B20: на выходе неверные данные Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |