0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 17
|
|
Решение задач из книги Страуструпа (шифрование/дешифрование)04.05.2025, 10:50. Показов 6109. Ответов 40
Доброго времени суток,
Решаю задачки из книги Б.Страуструпа "Язык программирования С++. Специальное издание.", Бином, 2019. Заинтересовали две: упр.9 и 10 из Пар.7.10. В упр. 9 предлагается написать программу шифрования по алгоритму c^key[i]. А в упр. 10 - написать программу, помогающую без знания ключа дешифровать текст, закодированный программой из упр. 9. Весь смак в том, что предлагается воспользоваться алгоритмом из другой удивительной книги: "David Kahn: The Codebreakers". Т.е. это не переборы ключей, а другой алгоритм, определяющий длину ключа по повторам в тексте и далее угадывающий отдельные символы исходя из частоты их употребления в английском языке. Я написал обе программы: и шифрующую, и дешифрующую. НО: алгоритм из книги рассчитан на работу с английским алфавитом - из шифрованного английского текста получаем открытый английский же текст. А при шифрования по алгоритму c^key[i] из латиницы всегда получается большой процент непечатаемых символов. Соответственно, при расшифровке строго по алгоритму на экран "выводятся" эти непечатаемые символы. (если расшифровывать примеры из книги "David Kahn: The Codebreakers" то программа работает, но там шифровалось подменой одних латинских букв другими, а не через c^key[i]) Вопрос: кто-нибудь вообще решал эту задачу 10 именно с этим алгоритмом из книги? решение есть или сама постановка задачи некорректна???
0
|
04.05.2025, 10:50 | |
Ответы с готовыми решениями:
40
Решение задачи из книги Страуструпа Каковы ваши впечатления от книги Страуструпа Программирование на языке С++(третье издание)? пример из книги страуструпа |
Вездепух
![]() ![]() ![]() 12900 / 6760 / 1815
Регистрация: 18.10.2014
Сообщений: 17,094
|
|||
05.05.2025, 06:17 | |||
0
|
Злостный нарушитель
![]() 10022 / 5488 / 1241
Регистрация: 12.03.2015
Сообщений: 25,567
|
|
05.05.2025, 09:43 | |
0
|
Злостный нарушитель
![]() 10022 / 5488 / 1241
Регистрация: 12.03.2015
Сообщений: 25,567
|
|
05.05.2025, 09:55 | |
0
|
Злостный нарушитель
![]() 10022 / 5488 / 1241
Регистрация: 12.03.2015
Сообщений: 25,567
|
|
05.05.2025, 10:00 | |
1
|
0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 17
|
|
05.05.2025, 11:41 [ТС] | |
Verevkin, да это те самые задачки. Там сама метода из книжке Codebreakers подразумевает ручной подбор ключа путем сопоставления символов зашифрованного и открытого текстов, с учетом частоты букв в английском алфавите. Я понял задачу так, что программа должна повторять алгоритм из книги, т.е.:
- прочитать зашифрованный текст из cin - проанализировать текст на повторы групп символов - расчитать положения повторов в тексте и дистанцию между ними в символах (считать каждый повтор одинаковых групп как новый?) - разделить дистанции между символами на множители - вывести таблицу повторов со множителями - сформировать и вывести таблицу частоты повторов НОД-ов, например 4, или 2 * 2, встречается в 5 из 8 интервалов - запросить пользователя выбрать "период повторения, вызанного ключом" - сформировать строку, состояющую из букв зашифрованного текста, начиная с первой и с шагом в период повторения (не вкл 1-ю) - сформировать строку ciphertext (буквы зашифрованного текста, начиная со второй с шагом в дистанцию ключа) - для каждой буквы в ciphertext сформировать таблицу plaintext (весь алфавит циклически начиная с буквы ciphertext) - вывести таблицу сiphertext | possible plaintexts - высокочастотные буквы проще сделать заглавными (или низкочастотные в зависимости от выбранного способа) - определить и вывести рекомендованные колонки (где меньше низкочастотных букв) - вывести на экран таблицу соответствия: зашифрованный текст в колонку шириной в размер ключа, под каждой строкой поле для заполнения, включая символы рекомендуемой колонки из предыдущего пункта Соответственно, ключ подбирается не полностью автоматически, а с участием человека, а на экран выводятся результаты расчетов, которые помогают оператору в подборе ключа. Отсюда и вопрос о применимости данной методы к расшифровке сообщения, зашифрованного при помощи c^key[i]. Текст программы во вложении. За стиль, код, используемые примитивные конструкции прошу не ругаться )))) Я сосредоточился на самом алгоритме, а средства старался использовать те, которые соответствует главе 7 в изучаемой мною книжке )))
0
|
Злостный нарушитель
![]() 10022 / 5488 / 1241
Регистрация: 12.03.2015
Сообщений: 25,567
|
||
05.05.2025, 13:00 | ||
Я не понимать...
0
|
0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 17
|
||
05.05.2025, 13:08 [ТС] | ||
ЗЫ. Проблема в том, что я честно старался следовать условию задачи и пришел к выводу, что задача именно этим методом нерешаема. Стало интересно спросить у более опытных людей.
0
|
Злостный нарушитель
![]() 10022 / 5488 / 1241
Регистрация: 12.03.2015
Сообщений: 25,567
|
|
05.05.2025, 13:12 | |
![]() Решение
0
|
![]() 3929 / 2836 / 792
Регистрация: 29.06.2020
Сообщений: 10,405
|
|||||||||||||
05.05.2025, 13:42 | |||||||||||||
ADnD,
1
|
0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 17
|
||||||||||||
05.05.2025, 14:00 [ТС] | ||||||||||||
1) для определения размера буфера по положению терминального нуля 2) непосредственно при исполнении алгоритма Какие преимущества будут в вашем варианте? Какие за / против есть в "противостоянии" между char* vs std::string? Я для себя выбрал string, т.к. изначально в задаче 9 вместо:
0
|
![]() ![]() ![]() 4591 / 2516 / 994
Регистрация: 01.06.2021
Сообщений: 8,676
|
||||||||
05.05.2025, 16:01 | ||||||||
0
|
0 / 0 / 0
Регистрация: 05.12.2024
Сообщений: 17
|
|||||||
05.05.2025, 18:07 [ТС] | |||||||
ввод может быть и 10 символов, и 10000. Для чего заморачиваться с буфером, если можно просто читать из cin в string? Для обработки string буфер не нужен, там же есть итераторы. Или я чего то не понимаю? (я думал что буфер нужен для избежания выхода за границы массива при чтении из cin в char*)
Честно я Вас не понимаю.
0
|
![]() 3929 / 2836 / 792
Регистрация: 29.06.2020
Сообщений: 10,405
|
||||||||||||||
05.05.2025, 21:33 | ||||||||||||||
![]()
Я же не говорю что у вас неправильно что-то. Добавлено через 56 секунд Добавлено через 12 минут Как то так, что ли.
1
|
![]() ![]() ![]() 4591 / 2516 / 994
Регистрация: 01.06.2021
Сообщений: 8,676
|
||
06.05.2025, 00:58 | ||
0
|
06.05.2025, 00:58 | |
Помогаю со студенческими работами здесь
20
Чем отличаються между собой книги Страуструпа Задачка из книги Страуструпа... Задача из книги Страуструпа Задачка из книги Страуструпа на поиск минимального и максимального введенного числа Задание из книги Страуструпа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
|
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
|
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|