0 / 0 / 0
Регистрация: 09.08.2019
Сообщений: 88
1

Ошибка с символами не в консоли(русские)

09.11.2019, 21:12. Показов 1216. Ответов 1
Метки нет (Все метки)

На слипы не обращать внимания просто скажите как исправить ошибку с символами. Ввожу с клавы "р(русскую)" записывается вообще как другой символ. Программа шифр цезаря смещение на 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
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
143
144
#include "pch.h"
#include <iostream>
#include <locale.h>
#include <cstdio>
#include <string>
#include <cstdlib>
#include <conio.h>
#include "windows.h"
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    char otvet;
    bool b;
    string ENG = "abcdefghigklmnopqrstuvwxyz";
    string RUS = "абвгдеёжзкийлмнопрстуфхцшщъыьэюя";
    cout << "Введите 1 если вам надо зашифровать. 2 если на расшифровать"<<endl;
    string  str1;
    string slovo;
    cin >> otvet;
    if (otvet == '2')
    {
        cin >> slovo;
            for (int i = 0; i < slovo.size(); i++)
            {
                b = 0;
                for (int j = 0; j < 27; j++)
                {
                    int k = j - 3;
                    while (k < 0)
                    {
                        k += 26;
                    }
                    if (tolower(slovo[i]) == ENG[j])
                    {
                        if (islower(slovo[i]) == 0)
                        {
                            cout << toupper(ENG[k]);
                            b = 1;
                            break;
                        }
                        else
                        {
                            cout << ENG[k];
                            b = 1;
                            break;
                        }
                    }
                }
                for (int j = 0; j < 33; j++)
                {
                    int k = j - 3;
                    while (k < 0)
                    {
                        k += 32;
                    }
                    if (tolower(slovo[i]) == RUS[j])
                    {
                        if (islower(slovo[i]) == 0)
                        {
                            cout << toupper(RUS[k]);
                            b = 1;
                            break;
                        }
                        else
                        {
                            cout << RUS[k];
                            b = 1;
                            break;
                        }
                    }
                }
                if (b != 1)
                {
                    cout << "Вы ввели некорректные данные";
                    Sleep(500000);
                    return 0;
                }
            }
        }
    if (otvet == '1')
    {
        cin >> str1;
        for (int i = 0; i < str1.size(); i++)
        {
            b = 0;
            for (int j = 0; j < 27; j++)
            {
                int k = j + 3;
                while (k > 25)
                {
                    k -= 26;
                }
                if (tolower(str1[i]) == ENG[j])
                {
                    if (islower(str1[i]) == 0)
                    {
                        slovo += toupper(ENG[k]);
                        b = 1;
                        break;
                    }
                    else
                    {
                        slovo += ENG[k];
                        b = 1;
                        break;
                    }
                }
            }
            for (int j = 0; j < 33; j++)
            {
                int k = j + 3;
                while (k > 31)
                {
                    k -= 32;
                }
                if (tolower(str1[i]) == RUS[j])
                {
                    if (islower(str1[i]) == 0)
                    {
                        slovo = toupper(RUS[k]);
                        b = 1;
                        break;
                    }
                    else
                    {
                        slovo = RUS[k];
                        b = 1;
                        break;
                    }
                }
            }
            if (b != 1)
            {
                cout << "Вы ввели некорректные данные";
                Sleep(500000);
                return 0;
            }
        }
        cout << slovo;
    }
    Sleep(500000);
    return 0;
}
0

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

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2019, 21:12
Ответы с готовыми решениями:

Заполнение консоли символами
Нужно заполнить консоль в нужном порядке, символом который пользователь вводить при выполнении...

Рисование в консоли (не символами)
Есть ли у кого пример рисования в консоли не символами. Буду очень признателен :-|

Заполнение консоли символами
Нужно заполнить консоль в нужном порядке, символом который пользователь вводить при выполнении...

При сохранении файла через SaveDialog русские названия получаются странными символами!
При сохранении файла через SaveDialog русские названия файлов получаются странными символами! ...

1
из племени тумба-юбма
2028 / 1449 / 300
Регистрация: 29.11.2015
Сообщений: 6,866
Записей в блоге: 13
09.11.2019, 21:56 2
Лучший ответ Сообщение было отмечено LexaNoob как решение

Решение

вот нашел в соседних ветках, то или не то:
C
1
2
    SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
    SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2019, 21:56

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

Заполнение окна консоли символами
Как можно заполнить окно консоли каким либо символом не выходя за нижнюю границу. По горизонтали...

Русские символы в консоли
Помогите, пожалуйста, я только начала учить си. int _tmain(int argc, _TCHAR* argv) {...

Русские шрифты в консоли
я поко только учусь и сейчас работаю на consol aplication у меня такая проблема не работают...

Русские буквы в консоли
Вчера основательно начал изучать этот замечательный язык. До этого уже было знакомство с...


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

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

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