0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
||||||
1 | ||||||
Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига23.04.2014, 21:06. Показов 1405. Ответов 12
Метки нет (Все метки)
Доброго времени суток! Помогите пожалуйста разобраться, почему вместо заданных мною, скажем 4 символов, после циклического сдвига он выдаёт в разы больше. Ошибка начинает появляться на третьем цикле for. Вот функция:
0
|
23.04.2014, 21:06 | |
Ответы с готовыми решениями:
12
Алгоритм для циклического сдвига слова на N символов влево Напишите функции для циклического сдвига слова влево и вправо Написать программу для циклического сдвига списка на n-1 элементов влево Определить функцию для циклического сдвига списка вправо на один элемент |
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
24.04.2014, 09:48 [ТС] | 3 |
На самом деле, Я решил задачу немного другим способом...Но мне не понятно, отчего(в этом варианте решения) вместо положенного количества чисел получается в массиве больше. Если конкретно, на вопрос ответить: то планировалась функция, для того, чтобы разобраться в элементарном шифровании по сдвигу и для этого и использовалась. Я не понимаю, откуда эти дополнительные элементы в массиве появляются? Вот во воложении Я поместил результат пробы этой кодировки:
0
|
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
24.04.2014, 09:59 [ТС] | 4 |
Да! Newbie666 поясните что значит "Г. код" это качество моего кода))) или определение какое-то?
0
|
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
24.04.2014, 11:29 [ТС] | 6 |
Вот ловите, не судите строго, Я пока ещё чайник)
0
|
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
24.04.2014, 11:32 [ТС] | 7 |
Хотя нет, как можно строже, больше знать буду)))
0
|
Заблокирован
|
|
24.04.2014, 11:52 | 8 |
О.о.о какой же мусор в твоём исходнике, у меня ваще твоя так сказать программа вылетает с экзепшеном, даже разбираться не хочу в таком мусоре...
Ты скажи, что ты хочешь сделать? Закодировать строку какой то другой строкой? Зачем тебе какая - то мутохрень? Нельзя побайтово XOR-м байты закодить и потом также раскодить? Код в две строки будет.
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
||||||
24.04.2014, 14:59 | 10 | |||||
Кателевский ВН, в смысл всего этого не вдавался, остается на твоей совести. Но вот вроде бы то, что должно быть:
0
|
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
25.04.2014, 09:42 [ТС] | 11 |
По условию задания нулей нет, кроме, как в конце строки. Добавлено через 7 минут DrOffset поясните пожалуйста это место "in[j] = static_cast<unsigned int>(ch[j]);", что-то мне подсказывает здесь проблема у меня и была. Почему именно такое приведение типов Вы использовали? Может быть лишние данные именно от того и появлялись у меня, из за неправильного приведения типов? Тогда почему они появляются?
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,267
|
|
25.04.2014, 13:32 | 12 |
Сообщение было отмечено Кателевский ВН как решение
Решение
Это не играет роли. Вообще-то расширение char->int - это автоматическое преобразование (оно у тебя и было), но я посчитал, что в алгоритме присутствует определенная неочевидность, и обозначил явно намерение это сделать.
Нет. Проблема была из-за неправильного чтения массива in (последний цикл while). Массив не обязан заканчиваться нулем, поэтому условие срабатывало значительно большее количество раз, чем требовалось, выводя мусор из памяти. Ноль мог встретиться и позже, тогда мусорных "элементов" было бы еще больше. Я же просто немного сократил твой алгоритм, добавил некоторой четкости формулировок и убрал ошибку выведения данных массива in. Добавлено через 2 минуты В конце строки ноль есть. Но он в конце строки. А в конце массив in нет нуля, потому что его туда никто не пишет. Массив in - это уже не строка. Добавлено через 6 минут Вообще, С++-касты задумывались в том числе и для того, чтобы внести определенную декларативность в исходный код. Чтобы было сразу видно, что тут происходит, чтобы, в том числе, можно было найти такой каст поиском по тексту. В общем, чем четче обозначены намерения программиста в исходном коде, тем меньше ему придется писать комментариев (они, как известно, имеют свойство устаревать и рассинхронизироваться с кодом), и тем проще будет другому программисту сходу разобраться.
1
|
0 / 0 / 1
Регистрация: 23.04.2014
Сообщений: 94
|
|
27.04.2014, 10:19 [ТС] | 13 |
Я понял, благодарю за помощь, очень помогли.
0
|
27.04.2014, 10:19 | |
27.04.2014, 10:19 | |
Помогаю со студенческими работами здесь
13
Напишите программу для выполнения циклического сдвига массива вправо на 4 элемента Оператор побитового сдвига Операция побитового сдвига Перегрузка оператора побитового сдвига << Ассемблерная вставка - реализация побитового сдвига 33 года понадобилось бухгалтеру, чтобы понять, чего не хватает в клавиатуре Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |