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

Зашифровать текст, заменив каждую букву на букву, отстоящую от нее на n букв

21.05.2012, 17:58. Показов 1749. Ответов 5
Метки нет (Все метки)

Помогите пожалуйста написать прогу в си
вот код паскаля
задание
Зашифровать заданный текст, записанный с помощью русских букв и знаков препинания, заменив каждую букву на букву, отстоящую от нее на n букв. Сдвиг производить по кругу. Расшифровать полученный текст. Знаки препинания – точка, запятая, пробел.




Pascal
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
Uses
 crt;
 
Function decrypt(a:string):string;
Var i,k:integer;
Begin
 For i:=1 to length(a) do
  If (a[i] = 'А') or (a[i] = 'а') then Begin
                                        k:=ord(a[i])+31;
                                        a[i]:=chr(k);
                                       End
                                  else
   If a[i] in ['Б'..'Я','б'..'я'] then Begin
                                        k:=ord(a[i])-1;
                                        a[i]:=chr(k);
                                       End;
 decrypt:=a;
End;
 
Function encrypt(a:string):string;
Var i,k:integer;
Begin
 For i:=1 to length(a) do
  If (a[i] = 'Я') or (a[i] = 'я') then Begin
                                        k:=ord(a[i])-31;
                                        a[i]:=chr(k);
                                       End
                                  else
   If a[i] in ['А'..'Ю','а'..'ю'] then Begin
                                        k:=ord(a[i])+1;
                                        a[i]:=chr(k);
                                       End;
 encrypt:=a;
End;
 
Var
 a:string;
 mode:byte;
Begin
 Readln(a);
 Repeat
  Write('Выберите режим (1-шифрование, 2-расшифрование): ');
  Readln(mode);
 Until (mode = 1) or (mode=2);
 Case mode of
  1:writeln(encrypt(a));
  2:writeln(decrypt(a));
 End;
End.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2012, 17:58
Ответы с готовыми решениями:

Зашифровать предложение заменив каждую букву на следующую за ней букву алфавите, сохраняя регистр букв
зашифровать предложение заменив каждую букву ,на следующую за ней букву алфавите, сохраняя регистр...

Зашифровать текст, заменив каждую его букву следующей по алфавиту (последнюю букву - первой). Все остальные символы оставить без изменения.
Дан файл, содержащий некоторый текст. Зашифровать текст, заменив каждую его букву следующей по...

Зашифровать текст, заменив каждую его букву следующей по алфавиту
Дан файл, содержащий некоторый текст. Зашифровать текст, заменив каждую его букву следующей по...

Зашифровать текст, заменив каждую его букву следующей по алфавиту
Дан файл, содержащий некоторый текст. Зашифровать текст, заменив каждую его букву следующей по...

5
5 / 5 / 4
Регистрация: 15.05.2012
Сообщений: 27
21.05.2012, 22:42 2
Еще актуально?
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 13
21.05.2012, 23:50  [ТС] 3
актуально

Добавлено через 7 минут
буду благодарен за помощь
0
5 / 5 / 4
Регистрация: 15.05.2012
Сообщений: 27
23.05.2012, 14:46 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include<stdio.h>
 
void encrypt(unsigned char str[])
{
int i;
i = 0;
while(str[i] != '\0')
{
    if(str[i]==128) 
        str[i]+=31;
    else if((str[i]>=129 && str[i]<=159)||(str[i]>=161 && str[i]<=175)||(str[i]>=225 && str[i]<=239))
        str[i]--;
    else if(str[i]==160) 
        str[i]+=79;
    else if(str[i]==224)
        str[i]-=49;
    i++;
}
}
void decrypt(unsigned char str[])
{
int i;
i = 0;
while(str[i] != '\0')
{
    if(str[i]==159) 
        str[i]-=31;
    else if((str[i]>=128 && str[i]<=158)||(str[i]>=160 && str[i]<=174)||(str[i]>=224 && str[i]<=238))
        str[i]++;
    else if(str[i]==239)
        str[i]-=79;
    else if(str[i]==175)
        str[i]+=49;
    i++;
}
}
void main()
{
int ch,i,j,mode;
unsigned char str[100];
printf("Choose mode (1-encrypt, 2-decrypt): ");
scanf("%d\n",&mode); 
 
i = 0;
while((ch = getchar()) != 10)// пока не "Enter"
{
    str[i++] = (unsigned char)ch;
}
str[i] = '\0';
 
switch(mode)
{
case 1:
    encrypt(str);
    for(j=0;j<i;j++)
        printf("%c",str[j]);
    break;
case 2:
    decrypt(str);
    for(j=0;j<i;j++)
        printf("%c",str[j]);
    break;
}
printf("\n");
}
1
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 13
23.05.2012, 15:20  [ТС] 5
щас посмотрел,почему то не шифрует

Добавлено через 10 секунд
спасибо большое
0
5 / 5 / 4
Регистрация: 15.05.2012
Сообщений: 27
24.05.2012, 11:28 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include<stdio.h>
 
char *encrypt(char *str)
{
int i;
i = 0;
while(str[i] != '\0')
{
    if(str[i]==65 || str[i]==97) 
        str[i]+=25;
    else if((str[i]>=66 && str[i]<=90)||(str[i]>=98 && str[i]<=122))
        str[i]--;
    i++;
}
return str;
}
char *decrypt(char *str)
{
int i;
i = 0;
while(str[i] != '\0')
{
    if(str[i]==90 || str[i]==122) 
        str[i]-=25;
    else if((str[i]>=65 && str[i]<=89)||(str[i]>=97 && str[i]<=121))
        str[i]++;
    i++;
}
return str;
}
 
void main()
{
int mode;
char str[100];
printf("Choose mode (1-encrypt, 2-decrypt): ");
scanf("%d\n",&mode); 
gets(str);
switch(mode)
{
case 1:
    printf("%s",encrypt(str));
    break;
case 2:
    printf("%s",decrypt(str));
    break;
}
printf("\n");
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2012, 11:28

Зашифровать текст и дешифровать, заменив каждую букву порядковым номером в алфавите
Пацаны помогите решить эту программу пожалуйста. Зашифровать текст и дешифровать, заменив каждую...

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

Отредактировать текст заменив каждую 5 букву со строчной на прописную и наоборот
помогите с написанием программы в С++ . срочно нужно очень, сам дуб дубом. в интернете не нашел...

Зашифруйте текст, заменив каждую букву непосредственно следующей за ней по алфавиту
Зашифруйте текст, записанный с помощью русских букв и знаков препинания, заменив каждую букву...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru