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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
#1

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

26.01.2010, 13:41. Просмотров 934. Ответов 10
Метки нет (Все метки)

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

(1+7) % 10 = 0.8

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

У кого какие мысли?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 13:41     Странное условие задания
Посмотрите здесь:

Условие задания - C++
Доброго времени суток. Дали задание по программированию, я конечно все понимаю, но такого не понимаю. Я сколько ни читал условие, так и...

Не понятное условие задания (Создать класс матрица) - C++
Добрый день! Помогите, пожалуйста, разобраться с условием задания. Вот само задание: Создать класс матрица, который содержит указатель...

Странное решение - C++
Тут встретился в книжонке с таким выводом 2-мерного массива, вроде простой, но вывод странный. Не дадите комент по странной строке: ...

Странное поведение string - C++
Здравствуйте. Сейчас я пытаюсь скомпилировать под Windows проект, который ранее писался под Linux. Делаю я это с помощью MinGW от...

Странное присвоение переменной - C++
часть кода struct verh // Вершины Машины { double x,y; }; struct cube // Структура машины {

Странное поведение wstring - C++
Всем привет! Ребята, не могу понять такую ситуацию. Вставляю в wstring строку в позицию 0 таким образом ...

Странное объявление конструктора - C++
Всем привет! Читаю Дейтела и увидел вот такое объявление конструктора. class Exceptions: public runtime_error { public: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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
Ушёл с форума.
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
4820 / 3240 / 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
4820 / 3240 / 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++
#include <iostream> #include <cstring> int main(){ char line1="hello world!"; char line2="hell word!"; int...

Странное поведение getline - C++
В программе в двух местах используеться getline. В первом случае все супер : string ownerName; getline (cin, ownerName); А во...

Странное поведение cin - C++
Есть класс, в нем есть два текстовых private члена, friend-оператор>> и friend-функция getline для записи в эти члены. Но когда в main.cpp...

Странное поведение транслятора - C++
В следуюшем примере код компилируется нормально, но объект класса b не содается (пробывал на Visual studio 10 и на Borland builder 5), что...

функции странное задание - C++
Напишите функцию, которая принимает два логических значения и один символ ('&', '|' или '^') и возвращает результат соответствующей...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru