Absurd писал(а):И что, у вас вся группа не может запустить консольную программу с тремя параметрами?
Я с таким просто ещё не встречалась.
У нас было, объявили переменную, присвоили значение.
А вот как вот здесь я не пойму
Зачем вообще переменная argc нужна
argc - количество параметров в командной строке, где сама программа считается первым параметром. Допустим, запускаете ее так: lzw.exe e file1.txt file1.bin. lzw.exe - аргумент 1, e - аргумент 2, file1.txt - аргумент 3, file1.bin - аргумент 4. Итого 4. Проверка для того чтобы проверить, заданы ли все необходимые параметры. Если не заданы, программа выводит сообщение об ошибке, пишет как ее запускать правильно и завершает свою работу. Если вы пытаетесь запустить программу из IDE вроде Visual C++, там надо будет в настройках отладки указать командную строку.
Absurd писал(а):argc - количество параметров в командной строке, где сама программа считается первым параметром. Допустим, запускаете ее так: lzw.exe e file1.txt file1.bin. lzw.exe - аргумент 1, e - аргумент 2, file1.txt - аргумент 3, file1.bin - аргумент 4. Итого 4. Проверка для того чтобы проверить, заданы ли все необходимые параметры. Если не заданы, программа выводит сообщение об ошибке, пишет как ее запускать правильно и завершает свою работу. Если вы пытаетесь запустить программу из IDE вроде Visual C++, там надо будет в настройках отладки указать командную строку.
Вроде немного поняла. Большое спасибо за помощь! И извините, если вопросы были глупыми
Maray писал(а):Вроде немного поняла. Большое спасибо за помощь! И извините, если вопросы были глупыми
Да без проблем. Могу еще кинуть график как оно работает, вдруг позволит проскочить.
На это графике блоки - функции, зеленые стрелки - вызовы функций, синие стрелки - ветвления, черные стрелки - блоки кода, толстые зеленые стрелки - вызовы функций которые составляют наибольший вес во времени работы программы, толстые черные стрелки - циклы с наибольшим количеством итераций. Фиолетовые стрелочки - системные вызовы. К сожалению, программа скомпилирована и операторы С в кружочках нечитаемы.
Сгенерировал график для декомпрессии, могу еще для компрессии сгенерировать.
Извините, пожалуйста, за беспокойство, это снова я. Возник вопрос по программе. В файле записана фраза "qwertyqwerty". В результате кодирования, в переменной ctx->dict следующие данные:
В скобках пишу prev, first, next, ch. Пишу те строки, в которых есть записи
101 (4294967295, 258, 4294967295, 'e')
113 (4294967295, 256, 4294967295, 'q')
114 (4294967295, 259, 4294967295, 'r')
116 (4294967295, 260, 4294967295, 't')
119 (4294967295, 257, 4294967295, 'w')
121 (4294967295, 261, 4294967295, 'y')
(Это, я поняла алфавит нашего файла. Буквы q, w, e, r, t, y)
4294967295 (в шестнадцатеричной системе - 0xffffffff) это максимальное значение которое можно записать в переменную unsigned int. Я так понимаю, это NIL, пустая ссылка. Не-NIL значение это ссылка внутри списка. 113 это ANSI код буквы 'q'. Алгоритм видимо такой: когда он считывет q из файла, он считывает также следующий байт ('w') и проверяет так же есть ли в в словаре комбинация qw. Если есть (в самом начале нет), он идет дальше и проверяет qwe. Если нет (наш случай), он пишет в выходной файл код буквы q и содает код 256 для цепочки "qw". Коды для цепочек байт больше 255, коды для единичных байт лежат в диапазоне [0, 255] и соответствуют самим байтам. prev - предыдущий код в цепочке, first - первый код в цепочке. Зачем нужен next я особо не углублялся. Я работаю с этим кодом на уровне "Функция по адресу X самая тяжелая, цикл в диапазоне адресов Y-Z самый тугой".
Absurd писал(а):4294967295 (в шестнадцатеричной системе - 0xffffffff) это максимальное значение которое можно записать в переменную unsigned int. Я так понимаю, это NIL, пустая ссылка. Не-NIL значение это ссылка внутри списка. 113 это ANSI код буквы 'q'. Алгоритм видимо такой: когда он считывет q из файла, он считывает также следующий байт ('w') и проверяет так же есть ли в в словаре комбинация qw. Если есть (в самом начале нет), он идет дальше и проверяет qwe. Если нет (наш случай), он пишет в выходной файл код буквы q и содает код 256 для цепочки "qw". Коды для цепочек байт больше 255, коды для единичных байт лежат в диапазоне [0, 255] и соответствуют самим байтам. prev - предыдущий код в цепочке, first - первый код в цепочке. Зачем нужен next я особо не углублялся. Я работаю с этим кодом на уровне "Функция по адресу X самая тяжелая, цикл в диапазоне адресов Y-Z самый тугой".
Немного поняла, Большое Вам спасибо! И извините за беспокойство
Maray, сорри за офтоп. У тебя уже 11 сообщений, поздравляю со званием coder. Теперь у тебя есть возможность выставить аватарку. Если конечно, это тебе интересно
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.