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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
sanya04
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 22
#1

Зашифровать текст - C++

25.06.2013, 13:12. Просмотров 1172. Ответов 10
Метки нет (Все метки)

. Чтобы зашифровать текст, записанный с помощью русских букв и знаков препинания, его можно переписать, заменив каждую букву непосредственно следующей за ней по алфавиту (буква «Я» заменяется на «А»). Дан текстовый файл f. Зашифровать данный текст и записать в файл g.
алгоритм решения задачи обработки данных, хранящихся в текстовом файле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 13:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Зашифровать текст (C++):

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

Зашифровать текст - C++
Зашифровать данное слово, используя таблицу ASCII-кодов: Printer И дешифровать, используя таблицу ASCII-кодов: 43 4F 4D 50 55 54 45 52 ...

Зашифровать текст - C++
Здравствуйте ! Помогите,пожалуйста,составить программу,которая бы считывала русский текст из файла "input.txt" и кодировала его,заменяя...

Зашифровать текст С++ - C++
Нужно текст взять из текстового документа File.txt, и вывести в текстовый-зашифрованный файл вот что я сделал #include...

зашифровать текст - C++
На C++ как зашифровать текст,чтобы буквы выводились в любом порядке в слове.

Зашифровать текст по ключу - C++
Разработать функцию программиста, которая шифрует строку, заменяя каждый символ другим символом по следующему правилу: к коду первого по...

10
iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 14:56 #2
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
int main()
{
    setlocale(0, "");
    
    ifstream f("f");
    ofstream g("g");
    string line;
 
    if (!f || !g)
    {
        cout << "Error!" << endl;
        system("pause");
        return 1;
    }
 
    while (!f.eof())
    {
        getline(f, line);
        int size = line.size();
        
        for (int i = 0; i < size; i++)
        {
            if (line[i] == 'я') line[i] = 'а';
            else if (line[i] == 'Я') line[i] = 'А';
            else line[i] = line[i] + 1;
        }
 
        g << line;
    }
 
    f.close();
    g.close();
    return 0;
}
0
sanya04
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 22
25.06.2013, 15:21  [ТС] #3
выводит консоль после операции и в нем написано ERROR.
0
iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 15:25 #4
Цитата Сообщение от sanya04 Посмотреть сообщение
выводит консоль после операции и в нем написано ERROR.
создайте файл f, положите его в тот же каталог вместе с программой и что-нибудь напишите в нем
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 15:42 #5
все хорошо, только вот маленькие русские буквы в ASCII не стоят подряд

у буквы п код 175, а у р - уже 224
1
iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 15:42 #6
Цитата Сообщение от Thinker Посмотреть сообщение
все хорошо, только вот русские буквы в ASCII не стоят подряд
только одна буква выходит из этого правила - Ё. все остальные на месте
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 15:44 #7
Цитата Сообщение от iv-a Посмотреть сообщение
только одна буква выходит из этого правила - Ё. все остальные на месте
я про маленькие русские буквы, у них разрыв имеется
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
25.06.2013, 20:30 #8
@Thinker, всё там на месте, кроме ё Ё
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
int main()
{
    setlocale(LC_CTYPE, "");
    for (int i = 192; i != 256; ++i)
        std::cout << i << ": "
            << static_cast<unsigned char>(i) << std::endl;
    return 0;
}
0
Миниатюры
Зашифровать текст  
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
25.06.2013, 21:33 #9
Цитата Сообщение от Olivеr Посмотреть сообщение
@Thinker, всё там на месте, кроме ё Ё
альтернативных кодировок несколько: ISO 8859-5, CP866, 1251, ГОСТ КОИ-8, 10007 и т.д.
Речь шла о СР866. Да, ее почти вытеснили другие кодировки, согласен. увидев алгоритм, как то о ней сразу почему-то подумал.
0
sanya04
0 / 0 / 0
Регистрация: 05.02.2013
Сообщений: 22
25.06.2013, 23:15  [ТС] #10
А как написать эту программу с помощью функций??

Добавлено через 1 час 19 минут
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
 
 
void create_file(char *namef,fstream &f)
{ 
    char st[80],s1[5];
    
    f.open(namef,ios::out);
 
    if (!f.is_open())
    {
        cout<<"ERROR"; 
        exit(1);
    }
 
    if(f.eof())
    {
        f.clear();
        f.seekg(0);
    }
 
    while (cin.get()!='\n') continue;
 
    cout << "Для завершения ввода нажмите * enter" <<endl;
 
    cin.getline(st,80);
 
    while (st[0]!='*')
    {
        f<<st<<endl;
        cin.getline(st,80);
            
    }
 
    f.close();
}
void read_file(char *namef,fstream &f)
{
    char st[80];
 
    f.open(namef,ios::in);
 
    if (!f.is_open())
    {
        cout<<"ERROR"; 
        exit(1);
    }
 
    if(f.eof())
    {
        f.clear();
        f.seekg(0);
    }   
    
    while (!f.eof())
    {
        f.getline(st,80);
        cout<<st<<"("<<strlen(st)<<")"<<endl;
    }
 
    f.close();
}
 
void zamen(char *namef,fstream &f,char *nameg,fstream &g)
{
    
    f.open(namef,ios::in);
    g.open(nameg,ios::binary|ios::out);
    char st[40];
    char *st1;
    st1=new char[40];
    int i=0,k=0,n;
    if (!f.is_open())
    {
        cout<<"ERROR";exit(1);
    }
    if (f.eof())
    {
    f.clear();
    f.seekg(0);
    }
    if(!g.is_open())
    {
    cout<<"ERROR";exit(1);
    }
    if(g.eof())
    {
    g.clear();
    g.seekg(0);
    }
     while (!f.eof())
    {
        f.getline(st,40);
        n=strlen(st);
        delete[] st1;
        st1=new char[n];
        st1[0]='\0';
        k=0;
 
        getline(f, line);
        int size = line.size();
        
        for (int i = 0; i < size; i++)
        {
            if (line[i] == 'я') line[i] = 'а';
            else if (line[i] == 'Я') line[i] = 'А';
            else line[i] = line[i] + 1;
        }
 
        g << line;
    }
      f.close();
    g.close();
}
 
 
 
 
 
void main()\
{
    setlocale(LC_ALL,"RUSSIAN");
    fstream f,g;
    char *namef;
    namef=new char[15];
    char *nameg;
    nameg =new char[15];
    
    cout<<"Enter name of the file ";
    cin>>namef;
    create_file(namef,f);
    read_file(namef,f);
    cout<<"Enter name of the new file ";
    cin>>nameg;
    zamen(namef,f,nameg,g);
    read_file(nameg,g);
}
как исправить функцию zamen c программы которая была предоставлена выше?
Заранее спасибо!
0
FraidZZ
Ex-Member
3898 / 1524 / 229
Регистрация: 06.01.2013
Сообщений: 4,050
Завершенные тесты: 1
26.06.2013, 12:10 #11
Вообще функцию замены можно сделать так, но я не уверен про кодировки, синтаксис, да и вообще давно не кодил =D
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char * zamen(char *in){
 setlocale(0, "");
 char alphabet[]="абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
 int i=0;
 bool r=false;
 while(in[i] != "\0") i++;
 char *s; s = new char[i];
 for (int n = 0; n < i; n++){
  r = false;
  for (int m = 0; m < 65; m++){
   if (in[n] == alphabet[m]){s[n]=alphabet[m+1]; r = true;}
  }
  if(!r) s[n]=in[n];
 }
 return s;
}
0
26.06.2013, 12:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2013, 12:10
Привет! Вот еще темы с ответами:

Текстовый редактор. Зашифровать текст. - C++
подскажите пожалуйста не пойму что надо сделать??? &quot;файл должен храниться в зашифрованном виде: над каждым симво-лом файла произвести...

Зашифровать текст, используя таблицу ASCII-кодов - C++
Помогите зашифровать данный текст, используя таблицу ASCII-кодов: Компилятор. Добавлено через 7 минут #include &lt;iostream&gt; ...

Зашифровать текст методом простой одинарной перестановки - C++
Кто умеет писать коды по шифрованию текста? Добавлено через 37 секунд Кто умеет писать коды по шифрованию текста?

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


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

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

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