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

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

Войти
Регистрация
Восстановить пароль
 
Ivakun
0 / 0 / 0
Регистрация: 20.04.2016
Сообщений: 2
#1

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

06.06.2016, 15:08. Просмотров 137. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2016, 15:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Low-skill-шифрование (C++):

error C3861: Low: идентификатор не найден - C++
error C3861: Low: идентификатор не найден error C2146: синтаксическая ошибка: отсутствие &quot;;&quot; перед идентификатором error C2065:...

G Skill F3-17000CL9-4GBXM - Оперативная память
Подарили память DIMM3:G Skill F3-17000CL9-4GBXM, поставил её на ASUS Rampage III Formula с процессором i7 960, проблема в том что не...

Блокировка Анти Чита в Skill 2 - Софт
Здравствуйте у меня проблема, Я играю в игру в которой зашита программа Античит, Сейчас я не могу в неё зайти меня перенаправляет в Окно...

2x4gb 2400 mhz g.skill ram - Оперативная память
1 вставляю комп работает , вторую ставлю , монитор вообще не дает сигнала , на видео карте кулеры не крутятся , биос обнулял , не помогает...

G.Skill RipjawsX F3-14900CL9D-8GBXL совместимость друг с другом - Оперативная память
Здравствуйте! в конце 2013г. я приобрел себе данную оперативную память G.Skill RipjawsX F3-14900CL9D-8GBXL, 2 планки по 4 гб. До сих...

Sabertooth 990FX R2.0 + DIMM DDR3 4096MBx2 PC12800 1600MHz G.Skill [F3-12800CL9D-8GBXL] - Материнские платы
Помогите, пожалуйста. При запуске BIOS определяет только 4Гб. Хотя SPD Information точно показывает оба модуля в своих разъемах. При...

1
KPD100
1 / 1 / 2
Регистрация: 02.09.2015
Сообщений: 13
06.06.2016, 15:53 #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)]);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2016, 15:53
Привет! Вот еще темы с ответами:

Multiboot +low format - Жесткие диски
Друзья, есть необходимость отформатить на низком уровне винт, хочу скачать мультизагрузочный диск с поддержкой низкоуровнего форматирования...

HP M1522nf пишет Memory is low - Принтеры, МФУ
Принтер через раз пишет на дисплее Memory is low.Принтер сетевой. Марка: HP модель: M1522nf. Подскажите пожалуйста как исправить данную...

Low disk free space - SUSE Linux
Привет! Ребят, такая проблема: я юзаю OpenSuse Linux и для директории /home нет свободного места хотя для директории / места еще на 39...

Память Kingstone Low voltage - Оперативная память
Она хорошая в плане стабильности и разгона? Думаю если на напряге 1,35v она работает на частоте 1600 с CAS 9,то значит если повысить...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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