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

Low-skill-шифрование - C++

Восстановить пароль Регистрация
 
Ivakun
0 / 0 / 0
Регистрация: 20.04.2016
Сообщений: 2
06.06.2016, 15:08     Low-skill-шифрование #1
Зацените код: он работает, но кажется, что алгоритм довольно кривой.
Дана строка-предложение. Зашифровать ее, поместив вначале все
символы, расположенные на четных позициях строки, а затем, в обратном
порядке, все символы, расположенные на нечетных позициях (например,
строка «Программа» превратится в «ргамамроП»)
Кликните здесь для просмотра всего текста
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
#include<iostream>
using namespace std;
int main()
{
    const int max=80;
    char str[max];
    char odd[max/2],even[max/2];
    cout<<"Enter string: ";
    cin.get(str,max);
    int k=strlen(str);
    for(int i=0,j=0,k=0; i<strlen(str); i=i++)                    //запоминание символов на четных и нечетных позициях
        {
            if(i>=strlen(str)-2)
            {
                if(i%2) 
                    {
                        even[j++]=str[i];
                        even[j++]='\0';                            //заканчиваем строку четных, если добавляется последнее четное
                }
                else 
                    {
                        odd[k++]=str[i];
                        odd[k++]='\0';                            //заканчиваем строку нечетных, если добавляется последнее нечетное
                }
            }
            else
            {
                if(i%2) even[j++]=str[i];
                else odd[k++]=str[i];
            }
    }
    for(int i=0,k=strlen(odd)-1; i<strlen(odd)/2+strlen(odd)%2; i++,k--)    //меняем порядок нечетных элементов
        {
            char temp=odd[i];
            odd[i]=odd[k];
            odd[k]=temp;
    }
    for(int i=0; i<strlen(str)/2; i++)                                      //переписываем 1-ю часть строки в четные элементы
        str[i]=even[i];
    for(int i=strlen(str)/2,j=0; i<strlen(str); i++,j++)                    //переписываем 2-ю часть строки в нечетные элементы в уже отсортированном порядке
        str[i]=odd[j];
    cout<<"New string: "<<str<<endl;
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2016, 15:08     Low-skill-шифрование
Посмотрите здесь:

C++ Шифрование
шифрование C++
C++ Шифрование
C++ c++ шифрование
C++ Шифрование
Шифрование C++
Шифрование C++
C++ error C3861: Low: идентификатор не найден

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KPD100
 Аватар для KPD100
1 / 1 / 2
Регистрация: 02.09.2015
Сообщений: 13
06.06.2016, 15:53     Low-skill-шифрование #2
Я заметил, что можно чуть упростить:
C++
1
2
3
4
5
6
   for (int i = 0, k = strlen(odd) - 1; i<strlen(odd) / 2 + strlen(odd) % 2; i++, k--)    //меняем порядок нечетных элементов
   {
      char temp = odd[i];
      odd[i] = odd[k];
      odd[k] = temp;
   }
заменить на
C++
1
reverse(odd, &odd[strlen(odd)]);
Yandex
Объявления
06.06.2016, 15:53     Low-skill-шифрование
Ответ Создать тему
Опции темы

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