0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 12
|
|||||||||||
1 | |||||||||||
Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвертым и т. д.04.04.2019, 15:30. Показов 2753. Ответов 10
Метки нет (Все метки)
Добрый день.
Помогите пожалуйста с проблемой: "Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвертым и т. д. Провести дешифровку." У меня получается её зашифровать. Ну т.е. я понял как это сделать циклом, но вот обратно никак. По идее надо провести все операции назад, но у меня не получается. Я создаю цикл, который совершает противоположные действия и он просто не работает. Подскажите в какую сторону копать, пожалуйста.
Вот я пытаюсь сделать все те же шаги назад, но не получается:
0
|
04.04.2019, 15:30 | |
Ответы с готовыми решениями:
10
Зашифровать введенную с клавиатуры строку, поменяв местами первый символ с третьим, второй с четвертым и т. д Зашифровать введённую с клавиатуры строку, поменяв местами первый символ со вторым, третий с четвёртым и т.д. Провести дешифровку Зашифровать введенную с клавиатуры строку, поменяв местами первый символ со вторым, третий с чет-вертым и т. д Зашифровать введенную с клавиатуры строку, поменяв местами первый символ с третьим, второй с четвертым |
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
04.04.2019, 15:47 | 2 |
Ошибка (и очень серьезная) уже в первом коде.
Объявлено char str1[N]; Строка 22 str1[N] просто не существует. Это какая-то чужая память. В Си индексация начинается с 0 и последний индекс N-1.
1
|
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 12
|
||||||
04.04.2019, 15:52 [ТС] | 3 | |||||
И вылезает еще проблема: если количество знаков четное - добавляется левый символ, а если нечетное- то последний символ не отображается. Что за фигня...
Добавлено через 3 минуты Поправил
Т.е. он символы то переворачивает, пока не дойдет до конца, там начинается: если символов четное количество - он добавляет еще 1 знак, если нечетное - не дописывает знак. А назад вообще не меняет, по второму циклу for. Как будто его и нет.
0
|
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
04.04.2019, 15:56 | 4 |
Все фигня (ну, может быть, не вся) объясняется в посте 2.
Добавлено через 3 минуты Ерунда. Прокрутите программу вручную (или отладчиком) на небольших строках типа "abc", "abcd" и посмотрите, что получается.
1
|
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 12
|
|
04.04.2019, 16:06 [ТС] | 5 |
Вот что я имею ввиду Он не использует второй цикл for для смены символов назад. Я не понимаю почему...
0
|
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 12
|
|||||||||||
04.04.2019, 16:32 [ТС] | 7 | ||||||||||
Так я же исправил ошибку, N-1 везде.
Да, не заметил что счетчик не обнулил. Но ведь все равно получается не верно. Я пытаюсь выяснить правильно ли я понял логику и верно ли
Как учить то, если не понятно... Добавлено через 11 минут Для того, что бы понять, что именно я не понял в этом всем, мне нужно увидеть ошибку. По ошибке я пойму, где я не правильно понял и смогу изучить\исправить этот момент. Да, тыкая пальцем в небо потому, что у меня нет преподавателя, который мог бы объяснить в чем мои выводы не верны. Вот я исправил и теперь все работает как надо (почти, с концом строки беда осталась).
Вот что я пытался выяснить...
0
|
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
04.04.2019, 18:29 | 8 |
Wardan, Ну как, справился? Получилось?
Самый лучший учитель - собственный опыт. Это я серьезно говорю.
Если еще есть сомнения и недоумения - выкладывай код - посмотрим. Только вот я не пониманию, что делать с последним символом в строке нечетной длины? Логичнее всего оставить его как есть. Менять-то не с чем...
1
|
35 / 28 / 8
Регистрация: 01.03.2019
Сообщений: 135
|
||||||
04.04.2019, 20:00 | 9 | |||||
Что-то не то накодил... Требуется доработка. Вроде это:
1
|
2495 / 1096 / 489
Регистрация: 17.11.2018
Сообщений: 2,788
|
||||||
05.04.2019, 00:15 | 10 | |||||
Сообщение было отмечено Wardan как решение
Решение
Wardan, этот же самый цикл является и дешифратором.
2
|
0 / 0 / 0
Регистрация: 31.03.2019
Сообщений: 12
|
|
05.04.2019, 01:33 [ТС] | 11 |
Я тихонько сижу и офигеваю...
У вас все работает независимо от длины строки и при этом никаких лишних символов... Пойду изучать функции строк еще раз... я даже не подумал про длину строки
0
|
05.04.2019, 01:33 | |
05.04.2019, 01:33 | |
Помогаю со студенческими работами здесь
11
Зашифровать строку, поменяв местами первый символ с третьим, второй с четвертым и т.д Дана строка. Зашифровать строку, поменяв местами первый символ с третьим, второй с четвертым и т.д. В массиве S поменять местами элементы: первый со вторым, третий с четвертым и т.д. Первый столбец матрицы поменять местами со вторым, третий - с четвёртым и т.д Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |