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

Ошибка при шифровании - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти ошибку http://www.cyberforum.ru/cpp-beginners/thread654593.html
немогу найти ошибку помогите пожалуйста.
C++ Площадь многоугольников Дана задача: Компонент ListBox содержит названия правильных многоугольников. Составить программу, вычисляющую площадь выбранного многоугольника по введенной длине стороны. Нашла формулу, по которой можно вычислить площадь любого правильного многоугольника - S= (na^2)/(4 tan⁡〖(180/n)〗 ) где n - количество сторон, а - длина стороны Текст программы:... http://www.cyberforum.ru/cpp-beginners/thread654588.html
Синтаксис языка c++ C++
Указать порядок вычислений и расставить скобки если это нужно: Подставить и подсчитать значения во всех примерах: x=7, b=5, c=7, d=2. 1) а=b+c*d<<2&8 2) a&077!=3 3) a=b||a==c&&c<5 4) c=x!=0 5) a=-1++b---5 6) a=b==c++ 7) a=b=c=0;
C++ Сортировка и слияние массивов
Товарищи, помогите пожалуйста разобраться с заданием. Буду очень благодарен.
C++ Что выбрать для графики? http://www.cyberforum.ru/cpp-beginners/thread654581.html
Есть задание связанное с построениями графиков на осях координат. Какую библиотеку выбрать для графики?
C++ Найти порядковый номер числа помогите решить задачу Дано 10 целых чисел.Найти порядковый номер второго положительного числа подробнее

Показать сообщение отдельно
Aleksanteri
0 / 0 / 0
Регистрация: 19.09.2012
Сообщений: 5
19.09.2012, 19:50     Ошибка при шифровании
Приветствую обитателей сего форума.
Недавно сел решать задачку, и вроде бы все получилось, но - выводит-то не те значения.
Сама задача в том, чтобы пользователь ввел строку, мы ее зашифровали (сами написали для этого функцию) и дешифровали.

И так, весь код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <cstring>
using namespace std;
 
void getShifr(char string[100]);
void unShifr(char string[100]);
 
int main() {
    char buff[100];
    cout << "Введите строку до 100 символов: ";
    cin >> buff;
    cout << "Строка до шифрования: " << buff << endl;
    getShifr(buff);
    cout << "Строка после шифрования: " << buff << endl;
    unShifr(buff);
    cout << "Строка после дешифровки: " << buff << endl;
}
 
void getShifr(char string[100]) {
    char alphabet[37][2]={
    {'a','b'},{'b','c'},{'c','d'},{'d','e'},{'e','f'},{'f','g'},
    {'g','h'},{'h','i'},{'i','j'},{'j','k'},{'k','l'},{'l','m'},
    {'m','n'},{'n','o'},{'o','p'},{'p','q'},{'q','r'},{'r','s'},
    {'s','t'},{'t','u'},{'u','v'},{'v','w'},{'w','x'},{'x','y'},
    {'y','z'},{'z','a'},{'1','!'},{'2','@'},{'3','#'},{'4','$'},
    {'5','%'},{'6','^'},{'7','&'},{'8','*'},{'9','('},{'0',')'}, {' ', '.'}
    };
    int size=sizeof(string)/sizeof(char);
    //----------------------------------//
    for(int i=0; i<=size; i++) {
        for(int j=0; j<=sizeof(alphabet)/sizeof(char); j++) {
            if(string[i]==alphabet[j][0]) string[i] = alphabet[j][1];
        }
    }           
}
 
void unShifr(char string[100]) {
    char alphabet[37][2]={
    {'a','b'},{'b','c'},{'c','d'},{'d','e'},{'e','f'},{'f','g'},
    {'g','h'},{'h','i'},{'i','j'},{'j','k'},{'k','l'},{'l','m'},
    {'m','n'},{'n','o'},{'o','p'},{'p','q'},{'q','r'},{'r','s'},
    {'s','t'},{'t','u'},{'u','v'},{'v','w'},{'w','x'},{'x','y'},
    {'y','z'},{'z','a'},{'1','!'},{'2','@'},{'3','#'},{'4','$'},
    {'5','%'},{'6','^'},{'7','&'},{'8','*'},{'9','('},{'0',')'}, {' ', '.'}
    };
    int size=sizeof(string)/sizeof(char);
    for(int i=0; i<=size; i++) {
        for(int j=0; j<=sizeof(alphabet)/sizeof(char); j++) {
            if(string[i]==alphabet[j][1]) string[i] = alphabet[j][0];
        }
    }   
}
В двух словах: я получаю строку, передаю ее в виде массива в функцию, там в цикле сверяю буквы и заменяю их на аналог (использую шифрование методом подстановки). Все символы съезжают направо, то есть a шифруется в b, b в c и т.д.

Собственно, я уже отчаялся искать ошибку сам. Компилируется без проблем, но как дело касается правильного вывода - не тут то было.

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