Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
1

Шифрования слова на английском языке путем перемешивания букв

02.03.2017, 20:49. Показов 2162. Ответов 9
Метки нет (Все метки)

Составить алгоритм и написать приложение для шифрования слова на
английском языке путем перемешивания букв (например, первой буквы с четвертой, второй –
с пятой и т.д.) и добавления новых символов. В программе вывести исходное слово,
закодированное и декодированное.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2017, 20:49
Ответы с готовыми решениями:

Получить из слова а, путем вычеркивания некоторого количества букв, слово в
получить из слова а , путем вычеркивания некоторого количества букв , слово в . Отображать...

Задан файл с текстом на английском языке. Выделить все различные слова. Слова, отличающиеся только регистром б
Задан файл с текстом на английском языке. Выделить все различные слова. Слова, отличающиеся только...

Задан файл с текстом на английском языке. Выделить все различные слова. Слова, отличающиеся только регистром б
Задан файл с текстом на английском языке. Выделить все различные слова. Слова, отличающиеся только...

Преобразование слова на английском языке в число
Мне дан файл, в котором на английском языке записано число от 1 до 9. Задача - преобразовать слово...

9
Форумчанин
Эксперт CЭксперт С++
8169 / 5017 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
03.03.2017, 13:26 2
Циклично сдвигает на 1 символ и добавляет мусор в конец:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <string.h>
#define SIZE 256
 
void encrypt(char *dst, const char *src)
{
    int i, len = strlen(src);
    dst[0] = src[len-1];
    for (i = 1; i < len; i++)
        dst[i] = src[i-1];
    strcat(dst, "aq-=1");
}
 
int main(void)
{
    char str[SIZE] = "eniki", dst[SIZE];
    encrypt(dst, str);
    printf("Before: %s\nAfter:  %s\n", str, dst);
    return 0;
}
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
16.03.2017, 20:38  [ТС] 3
MrGluck, Доброго времени суток! Извините за не своевременный ответ.
У меня Visual Studio выдаёт такую ошибку, подскажите, пожалуйста, как исправить.

и как сделать так, чтобы ввод слова производился пользователем?
0
Миниатюры
Шифрования слова на английском языке путем перемешивания букв  
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
16.03.2017, 21:19  [ТС] 4
MrGluck, мне кажется, нужно, чтобы как-то совсем по другому выводилось..без непонятных символов
0
Миниатюры
Шифрования слова на английском языке путем перемешивания букв  
Форумчанин
Эксперт CЭксперт С++
8169 / 5017 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
16.03.2017, 22:45 5
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 256
 
void encrypt(char *dst, const char *src)
{
    int i, len = strlen(src);
    dst[0] = src[len - 1];
    for (i = 1; i < len; i++)
        dst[i] = src[i - 1];
    dst[len] = '\0';
    strcat(dst, "aq-=1");
}
 
int main(void)
{
    char str[SIZE], dst[SIZE];
    int len;
 
    printf("Before: ");
    fgets(str, SIZE, stdin);
    len = strlen(str);
    if (len)
    {
        str[len - 1] = '\0';
        encrypt(dst, str);
        printf("After: %s\n", dst);
    }
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
17.03.2017, 08:43  [ТС] 6
MrGluck, спасибо) и еще подскажите, пожалуйста, почему со сдвигом на единицу работает, а на 2 уже нет(снова выдает странные символы)?
0
Форумчанин
Эксперт CЭксперт С++
8169 / 5017 / 1436
Регистрация: 29.11.2010
Сообщений: 13,455
17.03.2017, 09:50 7
Цитата Сообщение от Larionova_Darya Посмотреть сообщение
почему со сдвигом на единицу работает, а на 2 уже нет(снова выдает странные символы)?
Потому что где-то накосячили. Выкладывайте изменённый код.
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
17.03.2017, 10:29  [ТС] 8
MrGluck, я решила поменять шифровку и упростить до невозможности
вот код и результаты работы со словами четной/нечетной длины

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
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10
 
 
int main(void)
{
    int i;
    char str[SIZE], dst[SIZE];
    int len;
 
    printf("Before: ");
    fgets(str, SIZE, stdin);
    len = strlen(str);
    for (i =0 ; i < len / 2; i++)
    {
        dst[i] = str[len / 2+i ];
        dst[len/2+i] = str[i]; 
    }
 
    for (i =0 ; i < len; i++)
        printf("%c", dst[i]);
    
    printf("qwerty\n");
 
 
    system("pause");
    return 0;
}
0
Миниатюры
Шифрования слова на английском языке путем перемешивания букв   Шифрования слова на английском языке путем перемешивания букв  
273 / 132 / 44
Регистрация: 05.02.2015
Сообщений: 845
19.03.2017, 17:07 9
ну во всех предложенных вариантах нет функции декодирования: вам же в задании надо 3 строки вывести: исходную, закодированную, и декодированную. вот код , ввод оформлен отдельной функцией, есть функции шифрования и дешифрования. шаг можно задавать любой (будет работать с любым шагом).
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
#include <stdio.h> // подключаем библиотеку ввода вывода
#include <string.h> // библиотека работы со строками
int inputs(char *s, char *dop, int n) // функция ввода с проверкой
{
puts("entr input line");
gets_s(s, n);
puts("entr input dop line");
gets_s(dop, n);
int step = 0; // инициализируем шаг 0
while (step == 0) // проверка правильности ввода шага
{
puts("entr step");
scanf_s("%d", &step);
if (step < 1 && step >= strlen(s) - 1) // шаг не может привышать величину входной строки 
{
puts("incorrect step");
step = 0; // зацикливаем ввод
}
}
return step;
}
void shifr(char *a, char *b, char *dop, int step) // функция шифрования
{
for (unsigned int i = 0; i < strlen(a); i++)
b[i] = a[(i + step) % strlen(a)];
strcat_s(b, 256, dop);
}
void onshifr(char *a, char *b, char *dop, int step) // функция дешифрования
{
for (unsigned int i = 0; i < strlen(a) - strlen(dop); i++)
b[(i + step) % (strlen(a) - strlen(dop))] = a[i];
}
int main()
{
const int n = 256; // максимальный размер строк
char input[n] = { '\0' }, output1[n] = { '\0' }, output2[n] = { '\0' }, dop[n] = { '\0' }; // исходная строка, зашифрованная строка, декодированная строка, строка дополнительных символов
int step; // шаг ввхода
step = inputs(input, dop, n);
shifr(input, output1, dop, step);
onshifr(output1, output2, dop, step);
puts("input line ");
puts(input);
puts("shifr line ");
puts(output1);
puts("unshifr line ");
puts(output2);
 
 
return 0;
}
1
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 18
30.03.2017, 19:46  [ТС] 10
minore, и вновь спасибо Вам огромное! Очень выручили
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2017, 19:46

Напишите программу подсчета количества букв «с» в слове на английском языке
Напишите программу подсчета количества букв «с» в слове на английском языке. Добавьте в конец слова...

Определите долю гласных букв в заданном тексте на русском (английском) языке
Здравствуйте.Помогите пожалуйста с заданием.Заранее спасибо.

Определите долю гласных букв в заданном тексте на русском (английском) языке.
тоже выдает ошибку((((((((((((( program glassny; const glas='a, e, i, o, u, y'; uses crt; var...

Предложение на английском языке, вывести слова, начинающиеся с прописной буквы
Дана произвольная строка-предложение на английском языке, вывести слова, начинающиеся с прописной...


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

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

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