|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|||||||||||
При передаче в функцию динамического массива, в массиве искажаются данные29.04.2014, 10:11. Показов 5684. Ответов 42
Метки нет (Все метки)
Мне необходимо построить код Шеннона, на основе псевдокода, предложенного в лекции (кодирую текст на английском алфавите).
При создании кода Шеннона столкнулась с такой проблемой: при передаче в функцию массива CHAR_S (динамический массив, содержащий в упорядоченном виде символы, встречающиеся в файле) и ws (упорядоченный массив частот) в функцию
До передачи в функцию CHAR_S[N]: После передачи: До передачи в функцию ws[N]: После передачи в функцию, в массиве ws, вообще какая то ерунда: Далее, внутри функции Shennon(p,N,CHAR_S,ws) происходит искажение массива L[N]. Так выглядит массив сразу после окончания заполнения: Но уже после выполнения следующих операций данные в массиве L искажаются при i=0: i=5 Подскажите, пожалуйста, в чем может быть проблема? Файл NEW прикреплен к теме: Не считает произведение разных типов данных В целом рабочий код я приведу ниже, комментарии на русском, в компиляторе читаемы, а при переносе в блокнот и в ворд нечитаемы, поэтому прошу не ругаться, все комментарии переписывать, это с ума сойти, прошу лишь загрузить в компилятор, чтобы проверить, что код реально рабочий, и то может и не понадобится код вовсе, а знающим людям итак будет понятно в чем причина.
0
|
|||||||||||
| 29.04.2014, 10:11 | |
|
Ответы с готовыми решениями:
42
STM32f4 Spi - при первой передаче искажаются данные При передаче динамического массива по значению, изменяются исходные данные Одинаково ли быстродействие: 1. при передаче параметров в функцию или 2. создание кортежа и передаче его в функцию? |
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
||
| 29.04.2014, 16:35 [ТС] | ||
|
0
|
||
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|||||||
| 29.04.2014, 16:41 | |||||||
|
а как модифицировать входной указатель? в ф-ции create Вы выделяете память, и записываете значение на начало выделенной памяти, у Вас 3пути 1) передавать указатель по ссылке - как мы выяснили это у Вас не катит 2) передавать указатель на указатель - я пример приводил - его Вы не прокомментировали 3) Вернуть указатель из ф-ции
0
|
|||||||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
||
| 29.04.2014, 17:03 [ТС] | ||
![]() Добавлено через 2 минуты Еще заметила, что при создании массива CHAR_S, в который я копирую только те символы, которые встречаются в тексте, в нем почему то не 12 символов, а 13, причем последний символ 5...
0
|
||
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|
| 29.04.2014, 17:05 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
||
| 29.04.2014, 19:25 [ТС] | ||
|
Не могу найти косяк, все правильно создается, но после строки 271 к данным массива CHAR_S, добавляется 5, такое ощущение, что после выделения памяти массиву p, что-то ломается
![]()
0
|
||
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
|||||||||
| 29.04.2014, 21:18 | |||||||||
|
и ещё какие-то косяки пропадут, и не нужно будет их искать ![]() значения указателей L и C останутся такими, какими они были перед вызовом create_Mas. Поэтому, когда Вы что-то записываете в L[i], C[i], куда это записывается, можно только гадать. Чтобы убедиться в этом, можно добавить такую проверку:
1
|
|||||||||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
||
| 29.04.2014, 22:00 [ТС] | ||
. А массив CHAR_S ломается раньше, чем создаются массивы L и С , он ломается как только выделяется память под массив р ( ломается - делается вдруг не 12 символьным, а 13...)
0
|
||
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|||||||||||||||||||||||||||||||||||||||||
| 30.04.2014, 10:30 | |||||||||||||||||||||||||||||||||||||||||
|
вобщем задебажил ваш код
Выправил создания массивов Добавлено через 2 минуты
Добавлено через 4 минуты и еще после метода shake получилось так что символ с частотой 4 был на 1ом месте с частотой 2 на 2ом месте с частотой 3 на 3ем месте, я думаю так же где то косяк, насчет самого меода shake я как понял результатом должен быть массив в котором упорядоченны частоты появляения символов по убыванию, + в массиве CHAR символы так же переставляются на места их частот, один вопрос - а че как сложно алгоритм сделан? у Вас там сложность чуть примерно 2*N^2 Добавлено через 10 минут да не совсем понял что тут за действия
Добавлено через 7 минут о еще косяк, почему то для последнего символа в тексте делается лишний w[i]+=1; т.е в моем тексте "а" попадается 2 раза а по выходу из цикла для "а" частота 3 Добавлено через 5 минут короч вот это
0
|
|||||||||||||||||||||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|||||||||||
| 01.05.2014, 10:27 [ТС] | |||||||||||
|
Добавлено через 2 минуты Добавлено через 14 минут Добавлено через 3 минуты , тут Q[0]=0, Q[1]=Q[0]+P[1],...Q[n]=1(так как сумма вероятностей равна 1), но последнее значение Q мне не нужно в дальнейшем, поэтому расчет останавливается на Q[n-1] считает.Добавлено через 6 минут Добавлено через 20 минут исправила код:
0
|
|||||||||||
|
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
|
||
| 01.05.2014, 20:09 | ||
|
Может быть, и P[0] нужно прибавить? Или P[0] всегда == 0 ?
0
|
||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|
| 03.05.2014, 06:15 [ТС] | |
|
Alex5, Точно, вы правы! Я первый раз сделала правильно, потом исправила на так, дело в том, что путаница из-за того, что в псевдокоде идет обращение к массивам с нулевого кода
0
|
|
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
||
| 05.05.2014, 08:46 | ||
|
1
|
||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
||||||||
| 05.05.2014, 10:11 [ТС] | ||||||||
. . СпасибоДобавлено через 2 минуты
0
|
||||||||
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|||
| 05.05.2014, 10:16 | |||
![]() Вобщем да код из вижы я могу скинуть, кажется не удалил еще, ничего не ругается и работает, вижа 2010 Добавлено через 50 секунд
0
|
|||
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|
| 05.05.2014, 11:17 [ТС] | |
|
0
|
|
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|
| 05.05.2014, 19:41 | |
|
ultimate
ну как сказать легче, по крайней мере сносный дебаг, и норм компиль
0
|
|
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|
| 07.05.2014, 10:46 [ТС] | |
|
aLarman, Alex5, Спасибо, Вам, за помощь, в новой проге нашла где память ломается. В итоге создала массивы в теле main() и память перестала ломаться
. А понять почему именно ломается не получилось..
0
|
|
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|
| 07.05.2014, 10:53 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 15.08.2013
Сообщений: 132
|
|
| 07.05.2014, 19:55 [ТС] | |
|
Ну мне писали о том, что память занимается чем-то другим, пробовала делать по разному и как писали тоже, но все равно ломалась память...
0
|
|
|
655 / 576 / 164
Регистрация: 13.12.2012
Сообщений: 2,126
|
|
| 08.05.2014, 09:05 | |
|
Ульяниус, раз не получилось, давайте обновленный код в студию
0
|
|
| 08.05.2014, 09:05 | |
|
Не изменяются данные при передаче в функцию с параметром ref
Мусор в элементах массива при передаче в функцию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|