|
1 / 1 / 0
Регистрация: 11.05.2016
Сообщений: 5
|
||||||
Случайное появление мусора в значениях12.05.2019, 14:52. Показов 586. Ответов 7
Метки нет (Все метки)
Доброго времени суток. Столкнулся с неожиданной проблемой при написании алгоритма переброса значений из матрицы resultred в матрицу result4x4red (ну и то же самое для цветов green и blue). Однако, в определенный момент в result4x4(color) записывается какой-то трэш (подобный тому, который появляется в неинициализированных интах, что-то вроде -8365365353), причем случайным образом (при перезапуске программы может не появится, и она выдаст нормальные значения, и наоборот, там где выдавала нормальные значения, может появится трэш). Алгоритм должен перебрасывать значения из строк матрицы result(color) в блоки 4х4 матрицы result4x4(color), по 16 элементов соответственно. Я приложу сам проект, хотя он сыроват и не слишком-то удобен для чтения, если кто-то захочет глянуть конкретнее (программа принимает изображение бмп, и создает файл, который при закидывании в программу в идеале должен превращаться обратно в бмп - примитивный кодек). Был бы очень благодарен, если бы мне если не указали саму проблему, то хотя бы предположили в чем могут таиться подводные камни, а то я в С++ дуб дубом
. Сам я не вижу никакой ошибки в написании, и не представляю, в чем может быть проблема, кроме разве что недостачи оперативной памяти. Вот кусок кода, где это происходит, и объявления массивов:(Average(color) - массив, содержащий средние значения по блоку 4х4. Я проверял, ни в нем, ни в result(color) никакого мусора до начала цикла while нет) Кликните здесь для просмотра всего текста
0
|
||||||
| 12.05.2019, 14:52 | |
|
Ответы с готовыми решениями:
7
Вывести на экран дисплея сообщения о значениях функции при различных значениях аргумента
Случайное появление кнопок |
|
Just Do It!
|
|||||||||||||||||
| 13.05.2019, 09:14 | |||||||||||||||||
|
Вэрд,
Разбирем 31 вашу строку:
вы показали не весь код, и можно и предположить, что resultred[..][..] и averagered[..][..] у вас где-то вычисляются выше. Но выше я вижу что вы их только что задинамили в куче!
1
|
|||||||||||||||||
|
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
|
|
| 13.05.2019, 09:16 | |
|
Отличный пример того, как не надо писать программы. Почитайте Фаулера на досуге...
0
|
|
|
1 / 1 / 0
Регистрация: 11.05.2016
Сообщений: 5
|
||
| 13.05.2019, 12:07 [ТС] | ||
|
не вычисляются, но берутся из файла, и их значения не более чем трехразрядные, я проверял и до этих вайлов, и после, там мусора нет. Извините, что не вставил всего кода, вложение почему-то не сработало. Спасибо за ответ, я попробую сделать что-то именно с объявлением. А в чем проблема с задинамлением в куче, можно подробнее? Говорю же, я ни в С++, ни в С не очень-то хорошо разбираюсь, в коде могут быть разного рода нелепости. Они в результате все в оперативной памяти и если ее недостаточно, то они перекрываются? Или они просто перекрываются? Или проблема в чем-то еще?
0
|
||
|
1 / 1 / 0
Регистрация: 11.05.2016
Сообщений: 5
|
|
| 13.05.2019, 14:47 [ТС] | |
|
XLAT,
ну, проблема в том, что этот мусор появляется случайно. Если бы где-то была ошибка в индексах в цикле, то мусор бы появлялся систематически в конкретных элементах массива резалт4х4(цвет), но при повторных перезапусках программы с одинаковыми исходными данными мусор как бы кочует из элемента в элемент. То есть, получается, что один раз оно вычисляет все нормально, а второй - до вычисления не доходит, и это происходит в случайном порядке - но что делать в таком случае? Просто как-то попытаться упростить программу, чтобы не было этого большого цикла по переносу значений из массива в массив? Сам цикл вроде бы составлен правильно и сбоев давать не должен. Я очень хочу понять причину появления этих огромных значений, это бы сильно упростило переделку программы
0
|
|
|
|
||||||||||||
| 13.05.2019, 15:05 | ||||||||||||
|
брейкпойнт с условием поставить после каждой строчки result4x4[k][l]=... не судьба?
Поставить с условием что
0
|
||||||||||||
|
1 / 1 / 0
Регистрация: 11.05.2016
Сообщений: 5
|
|
| 13.05.2019, 17:27 [ТС] | |
|
Всем спасибо за помощь, я нашел, в чем проблема. В условных операторах стоит 3/4*Width, это в итоге давало 0, а не 0.75*Width, из-за чего цикл проходился по нескольким веткам за раз, что, конечно, не предусматривалось изначально. Да и else в конце надо было заменить на четвертый if, пожалуй, самая очевидная моя ошибка)
1
|
|
| 13.05.2019, 17:27 | |
|
Помогаю со студенческими работами здесь
8
Случайное появление и движение объектов Случайное появление 403 Forbidden только на Internet Explorer Появление ссылки при наведении на картинку+случайное расположение
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
*/
#include <iostream>
#include <stack>
#include <cctype>. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|