Форум программистов, компьютерный форум CyberForum.ru

Странное условие задания - C++

Восстановить пароль Регистрация
 
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
26.01.2010, 13:41     Странное условие задания #1
У Дейтлов есть задачка:
Компания хочет передавать данные по телефону, но она обеспокоена возможностью телефонного перехвата. Все передаваемые данные являются четырехзначными целыми числами. Компания попросила вас написать программу, которая должна шифровать эти данные так, чтобы они могли передаваться с большей безопасностью. Ваша программа должна читать целые четырехзначные числа и шифровать их следующим образом: заменять каждую цифру значением остатка от деления: (сумма это цифры плюс 7) / 10. Затем менять местами первую цифру с третьей и вторую с четвертой. Затем печатать полученное зашифрованное целое. Напишите отдельную программу, которая вводила бы зашифрованные четырехзначные целые и дешифровала их, получая исходные числа.
Программу шифрования я написал. А вот с чем работать программе дешифрования? Например, вводим 1234. С первым числом произойдут следующие действия:

(1+7) % 10 = 0.8

В итоге получаем дробную часть 8. А чтобы вернуть цифру 1, надо 0.8 * 10 - 7. Но программа-дешифратор получит не 0.8, а только 8. Откуда ей знать, что раньше там было 0.8 ? Ведь могло быть и 1.8, и 2.8 и что угодно вообще.

У кого какие мысли?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
26.01.2010, 15:32     Странное условие задания #2
(1+7) % 10 = 8
Операция % - Это ОСТАТОК от деления
Фактически при шифровании происходит циклический сдвиг цифр 1 - 8, 2 - 9, 3- 0, 4 - 1... 9 - 6
Так что преобразование вполне однозначно и обратимо

Дешифрация : (цифра +3) % 10
Без учета перестановок
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
26.01.2010, 15:54  [ТС]     Странное условие задания #3
Так, в условии задачи написано:
заменять каждую цифру значением остатка от деления: (сумма это цифры плюс 7) / 10
т.е. у числа 1234 цифра "1" будет шифроваться так:

(1 + 7 )/10 = 8 / 10 = 0.8

Какой здесь будет остаток? Как я понимаю, им является "8".
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
26.01.2010, 21:22     Странное условие задания #4
fs444, что-то в школе ты пропустил.
Поищи в гугле "остаток от деления"
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
27.01.2010, 09:34  [ТС]     Странное условие задания #5
Эх, да, остаток - это ж совсем другое
14 поделить на 3, частное будет 4, а остаток 2. А если делимое меньше делителя, то остатка, получается, нет.

По ходу, Дейтлы имели в виду не тот остаток. Я так понял речь шла про операцию "%", которая из 0.8 оставит только 8.

Проблему дешифровки решил так: X = (Y + 3) % 10
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.01.2010, 09:38     Странное условие задания #6
Цитата Сообщение от fs444 Посмотреть сообщение
(1+7) % 10 = 0.8
Фиг. (1+7) % 10 = 8, а не 0.8.

Добавлено через 1 минуту
Цитата Сообщение от fs444 Посмотреть сообщение
А если делимое меньше делителя, то остатка, получается, нет.
Бред. Частное в этом случае равно нолю, а остаток делимому.
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
27.01.2010, 09:41  [ТС]     Странное условие задания #7
(1+7) % 10 = 0.8
Фиг. (1+7) % 10 = 8, а не 0.8.
Ну так мне и нужен 8

Берем 1. Шифруем ее:

(1 + 7) % 10 = 8 % 10 = 8

В итоге получаем 8.

Дешифруем 8:

(8 + 3) % 10 = 11 % 10 = 1

В итоге получаем исходную 1. И так со всеми остальными числами.

А если делимое меньше делителя, то остатка, получается, нет.
Бред. Частное в этом случае равно нолю, а остаток делимому.
Это как? Поясни в цифрах .
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
27.01.2010, 11:15     Странное условие задания #8
прямое
5 -> (5+7) % 10 == 2
7 -> (7+7) % 10 == 4

обратное
2 -> 2 + 10 - 7 == 5
4 -> 4 + 10 - 7 == 7
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
27.01.2010, 11:40  [ТС]     Странное условие задания #9
Цитата Сообщение от accept Посмотреть сообщение
прямое
5 -> (5+7) % 10 == 2
7 -> (7+7) % 10 == 4

обратное
2 -> 2 + 10 - 7 == 5
4 -> 4 + 10 - 7 == 7
Ну и так, видимо,тоже можно сделать. Спасибо
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.01.2010, 01:33     Странное условие задания #10
не, это я ошибся (не проверил для восьмёрки)
Day всё правильно вывел
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2010, 08:37     Странное условие задания
Еще ссылки по теме:

C++ Странное поведение кода
Не понятное условие задания (Создать класс матрица) C++
C++ Странное распараллеливание

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
28.01.2010, 08:37  [ТС]     Странное условие задания #11
не, это я ошибся (не проверил для восьмёрки)
Да, я тоже почувствовал
Yandex
Объявления
28.01.2010, 08:37     Странное условие задания
Ответ Создать тему
Опции темы

Текущее время: 01:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru