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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.83
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
#1

Кодирование методом "Цезаря" - C++

21.01.2011, 20:34. Просмотров 2842. Ответов 14
Метки нет (Все метки)

Здравствуйте,помогите решить задачу:
Дана строка содержащая символы: цифры,латинские буквы, разделители.
нужно закодировать эту строку методом Цезаря (т.е. кажду латинскую букву поменять на букву которая стоит в алфавите на 3 позиции вперед. т.е если стояла А будет стоять D)
спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2011, 20:34     Кодирование методом "Цезаря"
Посмотрите здесь:

Разработка прикладной программы "Шифрование" (методом Цезаря) - C++
Здравствуйте ! такая проблема: нужно приложение с кнопками , которое бы шифровало / дешифровало по методу Цезаря. в консольном виде сделал...

"Теория вероятности Шейтона" и "Кодирование/дикодирование информации" (C++) - C++
Всем здравструйте! :) Есть две задачки: "Теория вероятности Шейтона" и "Кодирование/декодирование информации". Код первой: Задание...

Написать код шифрования методом "Змеиный" и "Спиральный" - C++
весь интернет перерыл, не могу найти ничего нормального, если кто может или знает напишите хоть ссылки, срочно нужно

Упорядочить массив, начиная с элемента с номером К, методом "пузырька" - C++
Задан массив U(N) и натуральное число К. Сортировать элементы, начиная с элемента с номером К, за ростом. Для решения задачи применим...

Написать интерфейс "Парсер" с методом парсинга (разбора) файлов - C++
Помогите пожалуйста с заданием Написать интерфейс "Парсер" с методом парсинга (разбора) файлов parse(std::string filename). Написать...

Сортировка одномерного массива методом обмена ("пузырьком") - C++
Имеется одномерный массив размерностью n, заполняемый генератором случайных чисел. Результат выводится на экран в 5 столбцов. Нужно...

Сортировка двумерного массива методом вставок с "конфеткой" - C++
Доброго времени суток. Помогите разобраться со следующим заданием (в форуме С мне не помогли): Необходимо отсортировать двумерный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
21.01.2011, 21:09     Кодирование методом "Цезаря" #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
 
int main(){
    string s;
    int counter=3;
    getline(cin, s);
    for(int i=0;i<s.size();i++){
        if(isalpha(s[i])){
            while(counter){
                ++s[i];
                --counter;
                if(!isalpha(s[i]))s[i]-=26;
            }
            counter=3;
        }
    }
    cout<<"\n"<<s;
}
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 21:13  [ТС]     Кодирование методом "Цезаря" #3
Цитата Сообщение от igorrr37 Посмотреть сообщение
getline
это что?
Цитата Сообщение от igorrr37 Посмотреть сообщение
if(isalpha(s[i]))
это что значит?
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
21.01.2011, 21:15     Кодирование методом "Цезаря" #4
Цитата Сообщение от Егорка47 Посмотреть сообщение
это что?
В гугле забанен ?
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.01.2011, 21:15     Кодирование методом "Цезаря" #5
немножко времени потратить и бах.
http://www.cyberforum.ru/cpp-beginne...ead125816.html
Шифрование/дешифрование текста: шифр Цезаря
C++
1
getline() // считать строку.. лень, лень ..
Алексaндр
21.01.2011, 21:27
  #6

Не по теме:

Цитата Сообщение от asics Посмотреть сообщение
В гугле забанен ?
ахах )))))

Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 21:30  [ТС]     Кодирование методом "Цезаря" #7
Цитата Сообщение от igorrr37 Посмотреть сообщение
if(isalpha(s[i])){
while(counter){
++s[i];
--counter;
if(!isalpha(s[i]))s[i]-=26;
можете объяснить эту часть?

если итый элемент строки(??)...в цикле пока истина переходим к след. символу counter понижаем на 1(зачем?)
если не истина... то итому эл - 26(зачем?)
объясните пожалуйста!
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.01.2011, 21:38     Кодирование методом "Цезаря" #8
Цитата Сообщение от Егорка47 Посмотреть сообщение
(т.е. кажду латинскую букву поменять на букву которая стоит в алфавите на 3 позиции вперед
C++
1
int counter=3;
передвигаем элементы в строке до тех пор, пока counter не станет нулю равен.
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 21:43  [ТС]     Кодирование методом "Цезаря" #9
понял,спасибо)
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 21:47  [ТС]     Кодирование методом "Цезаря" #10
Цитата Сообщение от Егорка47 Посмотреть сообщение
if(!isalpha(s[i]))s[i]-=26;
а это что?

Добавлено через 19 секунд
Цитата Сообщение от NiRamz Посмотреть сообщение
Не по теме:
для спасибо имеется кнопочка
я знаю)

Добавлено через 1 минуту
как буд-то вы эти спасибо на деньги менять будете
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.01.2011, 21:50     Кодирование методом "Цезаря" #11
Функция isalpha() возвращает ненулевое значение, если ее аргумент ch является буквой, в противном случае возвращается нуль. Принадлежность символа к буквам зависит от конкретного языка. Для английского языка таковыми являются прописные и строчные буквы от А до Z.
следовательно, если вернет 0 от ф-ции, то переходим в начало строки.. вроде так
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 21:54  [ТС]     Кодирование методом "Цезаря" #12
Цитата Сообщение от NiRamz Посмотреть сообщение
то переходим в начало строки.. вроде так
то есть это есть те самые -26?
почему именно -26?
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
21.01.2011, 22:03     Кодирование методом "Цезаря" #13
там не -26.. s[i]-=26 эта запись равносильна s[i] = s[i]-26, почему именно 26 я чего то понять не могу если честно ..
Егорка47
7 / 6 / 1
Регистрация: 26.10.2010
Сообщений: 249
21.01.2011, 22:08  [ТС]     Кодирование методом "Цезаря" #14
Цитата Сообщение от NiRamz Посмотреть сообщение
там не -26.. s[i]-=26 эта запись равносильна s[i] = s[i]-26
я это и имел ввиду.
я тоже не могу понять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2011, 07:24     Кодирование методом "Цезаря"
Еще ссылки по теме:

Упорядочить заданный массив по неубыванию методом "пузырька" - C++
Вот такая проблема, нужно отсортировать массив по неубыванию именно методом &quot;пузырька&quot; , компилятор работает, но массив отсортирован не по...

Отсортировать каждый столбец матрицы по возрастанию элементов методом "пузырька" - C++
Здравствуйте!!! помогите, пожалуйста, написать программу на С++. дана матрица размерностью n на n, содержащая целые числа. отсортировать...

Курсовая работа "Решение систем нелинейных уравнений Методом Ньютона" - C++
РЕбят помогите, горю, курсач через 3 дня сдавать, а я все время работал и теперь просто без вашей помощи пропаду. Тема &quot;РЕшение систем...

Отсортировать диагонали матрицы параллельные побочной методом "пузырька" по возрастанию - C++
Дорогие форумчане, у меня большие проблемы с С++ и я не могу справится с этой задачей. На форуме видел похожую тему, но там используется...

Для работы с методом fopen(filename, "rb"); какие библиотеки нужно подключать? - C++
Знаю, что для работы с методом fopen используется: #include &lt;stdio.h&gt; Может есть другие библиотеки? #include &lt;?????????.h&gt; Дело...


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

Или воспользуйтесь поиском по форуму:
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
22.01.2011, 07:24     Кодирование методом "Цезаря" #15
Цитата Сообщение от Егорка47 Посмотреть сообщение
то есть это есть те самые -26?
почему именно -26?
Это сделано на случай если менять например букву 'Z' :
в этом случае после увеличения s[i] на 3 , s[i] станет уже не буквой. igorrr37 этот случай проверяет так: if(!isalpha(s[i])) .
И в этом случае он делает s[i]-=26; для того чтобы s[i] снова стала буквой (например 'Z' становится 'C' , 'Y' станет 'B', 'X' станет 'A')
Yandex
Объявления
22.01.2011, 07:24     Кодирование методом "Цезаря"
Ответ Создать тему
Опции темы

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