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

Переход с одной строки массива на другую - C++

Восстановить пароль Регистрация
 
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
22.09.2011, 20:50     Переход с одной строки массива на другую #1
проблема собственно в том что с первой строки массива цикл не переходит на другую.
Это таблица тритемия. Прога работает но не коректно, т.е. допустим шифруем имя toma получаем tham,
а должно быть tpod.
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <iostream>
 
void main()
{
    setlocale (LC_ALL, "Russian");
int mode;
int z2;
int z1;
int z3;
int y1;
char let[20]={0};
char x2=1;
char decryword[20];
char cryword[20]={0};
int i1;
int j;
int j1;
char alphabet[26][26]=
{
{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},
{'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a'},
{'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b'},
{'d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c'},
{'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d'},
{'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e'},
{'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f'},
{'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g'},
{'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h'},
{'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i'},
{'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j'},
{'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k'},
{'m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l'},
{'n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m'},
{'o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n'},
{'p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'},
{'q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'},
{'r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'},
{'s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r'},
{'t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'},
{'u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'},
{'v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u'},
{'w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v'},
{'x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w'},
{'y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'},
{'z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'},
};
 
while (1)
{
    printf("\nВведите 1 для шифровки \nВведите 2 для дешифровки\nВведите 0 для выхода\n");
std::cin>>mode;
switch (mode)
{
case 1: printf("%d - Шифрование\n",mode);
printf("Введите слово\n");
std::cin>>let;
    for ( z2=strlen(let);z2>0;z2--)
        {
            decryword[z2]=let[z2-1];
        }
decryword[0]=x2;
decryword[strlen(let)]='\0';
printf("\nСлово для шифрования: %s\n",let);
for (z3=0;z3<20;z3++)
    {
        z1 = y1 = 0;
    if((let[z3] !='\0')||(decryword[z3] !='\0'))
{
    for (z2=0;z2<26;z2++)
    if (alphabet[0][z2]==let[z3])
{
    z1=z2;break;
}
for (int y=0;y<26;y++)
if (alphabet[y][0]==decryword[z3])
{
    y1=y;break;
}
cryword[z3]=alphabet[y1][z1];}
else break;
    }
cryword[z3] = '\0';
printf("\nШифротекст: %s\n",cryword);break;
////////////////////////////////////////
case 2: printf("%d - Дешифровка\n",mode);
printf("\nВведите текст для дешифровки:\n");
std::cin>>let;
    printf("\nШифротекст: %s\n",let);
int i2;
for (i2=0;let[i2];i2++)
{
    i1 = j1 = 0;
    {
        for (int i=0;i<26;i++)
            if (alphabet[i][0]==x2)
        {
            i1=i;break;
        }
    for (j=0;j<26;j++)
        if (alphabet[i1][j]==let[i2])
            {
                j1=j;break;
            }
decryword[i2]=alphabet[0][j1];
    }
x2=decryword[i2];
}
decryword[i2] = ' \0';
printf("\nДешифрованный текст: %s\n",decryword);
break;
case 0: exit(EXIT_SUCCESS); break;
default: printf("%d - Значения только 1 или 2!\n",mode);
return;
}
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
22.09.2011, 21:00     Переход с одной строки массива на другую #2
Почитайте про таблицу символов и осознайте, что такой массив вам не нужен.
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
23.09.2011, 08:38  [ТС]     Переход с одной строки массива на другую #3
нужно сделать именно двумерный массив, в этом то и соль задачи.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
23.09.2011, 11:57     Переход с одной строки массива на другую #4
Слишком соленая получается задача. Как я понимаю, алгоритм такой: символ #n смещается на n по алфавиту, так?

Добавлено через 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstring>
 
int main()
{
    char alphabet[26];
    for(int i = 0; i < 26; ++i)
        alphabet[i] = i + 97;
        
    std::string someText;
    std::cin >> someText;
    
    for(int i = 0; i < someText.length(); ++i)
        for(int j = 0; j < 26; ++j)
            if(someText[i] == alphabet[j])
            {
                someText[i] = alphabet[(j + i) % 26];
                break;
            }
            
    std::cout << someText;
    return 0;
}
Ну вот, набросал, довольно простой и понятный алгоритм. Менюшку сами прикрутите
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
25.09.2011, 09:48  [ТС]     Переход с одной строки массива на другую #5
спасибо!)
Gepar
25.09.2011, 12:41
  #6

Не по теме:

Цитата Сообщение от solomid Посмотреть сообщение
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
{
{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},
{'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a'},
{'c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b'},
{'d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c'},
{'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d'},
{'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e'},
{'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f'},
{'h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g'},
{'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h'},
{'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i'},
{'k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j'},
{'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k'},
{'m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l'},
{'n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m'},
{'o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n'},
{'p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'},
{'q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'},
{'r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q'},
{'s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r'},
{'t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s'},
{'u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t'},
{'v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u'},
{'w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v'},
{'x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w'},
{'y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'},
{'z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y'},
};
Oh shi

soon
25.09.2011, 12:43
  #7

Не по теме:

^
Впечатляет, не правда ли?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2011, 16:23     Переход с одной строки массива на другую
Еще ссылки по теме:

C++ Переход из одной системы исчисления в другую
Копирование одной строки в другую C++
C++ Копировать несколько символов из одной строки в другую

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

Или воспользуйтесь поиском по форуму:
solomid
1 / 1 / 0
Регистрация: 22.09.2011
Сообщений: 86
26.09.2011, 16:23  [ТС]     Переход с одной строки массива на другую #8
да лаааадна, оно же почти работало че вы
Yandex
Объявления
26.09.2011, 16:23     Переход с одной строки массива на другую
Ответ Создать тему
Опции темы

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