Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > [C++] Матрица пикселей в BMP |
Автор: Sahon 7.1.2012, 22:58 | ||
Программа:
Программа считывает матрицу пикселей из одного *.bmp, перемешивает их[1] и выводит их в out.bmp. Дело в том, что при выводе в файл перемешанного массива pixels_crypted программа аварийно завершает работу. Думаю, что причина в закомментированных строках кода (понятно, что при компиляции код закомментированным не был). [1] - перемешивание пикселей: в четных (отсчет с 0) столбцах - пиксели имеют обратный порядок: вместо 1 получаем 5 2 4 3 3 4 2 5 1 Вопрос: Где я накосячил в программе? ![]() |
Автор: bsa 8.1.2012, 10:39 |
по идее, твой код вообще не должен компилироваться. так как используются массивы с неконстантным размером. в закомментированном коде проблем нет. кстати, алгоритм кодирования не будет работать с не восьмибитными картинками. С черно-белыми тоже могут возникнуть проблемы |
Автор: Sahon 8.1.2012, 12:09 | ||
А думаю тебе стоит по-внимательнее посмотреть программу и ты увидишь, что константы все-таки имеются. А теперь, пожалуйста, объясни почему с восьмибитными картинками алгоритм не будет работать? |
Автор: Sahon 8.1.2012, 20:51 | ||||
Я же написал, что константы присутствуют. Или вы не видите const int? ![]() |
Автор: xvr 8.1.2012, 21:07 | ||
Это неправильные константы. Они вычисляются в процессе работы программы. Делать массивы с границами, определяемыми такими константами можно только в С99 (а за ним и в С++11). Ну и GNU по традиции все расширения С99 (да и свои собственные) распространил на С++ (не дожидаясь выхода стандарта) |
Автор: bsa 9.1.2012, 12:08 | ||||
именно с восьмибитными он работать и будет. А вот с 16-ти- и 1-нобитными нет. Потому что там для одного пикселя используется не 1 байт (в первом случае 2, а во втором одна восьмая).
В стандарт С++11 введена поддержка подобных массивов. Просто меня сильно удивляет, почему новичок начинает с подобных конструкций... |