2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56

Расшифровка файла: каждая русская буква заменяется на букву того же регистра, следующей за ней

26.06.2017, 22:43. Показов 5422. Ответов 32
Метки нет (Все метки)

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

Добрый вечер. Уважаемые программисты - профессионалы! У меня возникла сегодня такая ситуация. На экзамене по программированию(первый курс) мне достался такой билет, ниже прилагается с моим решением поставленной задачи. Проверяющий сначала счел мой код не работающим, а затем полу рабочим. Прошу дать объективную оценку и Ваши комментарии по работоспособности моего кода. Заранее спасибо.
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
// Variant10.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
#include <iostream>
#include <fstream>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
 
void coding(char *str)
{
    cout << "Coding..." << endl;
    while (*str)
    {
 
        if (*str >= 'А' && *str <= 'я')
        {
            cout << "Replacing " << *str << " -> ";
            if (*str == 'Я')
            {
                *str = 'А';
            }
            else
                if (*str == 'я')
                {
                    *str = 'а';
                }
                else
                    if (*str == 'п' && *str == 'а')
                    {
                        *str = 'р';
                        *str = 'б';
                    }
                    else
                    {
                        *str = (*str) + 1;
 
                    }
            cout << *str << endl;;
        }
 
        str++;
    }
}
 
 
 
 
void decoding(char *str)
{
    cout << "Decoding..." << endl;
    while (*str)
    {
 
        if (*str >= 'А' && *str <= 'я')
        {
            cout << "Replacing " << *str << " -> ";
            if (*str == 'А')
            {
                *str = 'Я';
            }
            else
                if (*str == 'а')
                {
                    *str = 'я';
                }
                else
                    if (*str == 'р' && *str == 'б')
                    {
                        *str = 'п';
                        *str = 'а';
                    }
                    else
                    {
                        *str = (*str) - 1;
 
                    }
            cout << *str << endl;;
        }
 
        str++;
    }
}
 
int main(int argc, char** argv)
{
 
    ifstream fileIn("text.txt");
    ofstream fileOut("text2.txt");
 
    char textBuffer[256];
 
    memset(textBuffer, 0, 256);
 
    cout << "Enter text : ";
    cin.getline(textBuffer, 256);
 
    coding(textBuffer);
    cout << textBuffer << endl;
    decoding(textBuffer);
    cout << textBuffer << endl;
    if (fileOut.is_open())
    {
        fileOut.write(textBuffer, 256);
 
    }
    fileOut.close();
    system("pause");
    return 0;
}
Миниатюры
Расшифровка файла: каждая русская буква заменяется на букву того же регистра, следующей за ней  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2017, 22:43
Ответы с готовыми решениями:

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

Шифрование: каждая буква, являющаяся i-й по алфавиту, заменяется на (i+2)-ю букву
Разработать программу шифровки текста из букв. Каждая буква, являющаяся i-й по алфавиту, заменяется на (i+2)-ю букву, предпоследняя буква...

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

32
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
27.06.2017, 13:30
Студворк — интернет-сервис помощи студентам
забыл
C++
1
const std::string alpha = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
27.06.2017, 13:33
zarko97, это точно весь код?

Добавлено через 2 минуты
Цитата Сообщение от zarko97 Посмотреть сообщение
return ch >= 'А' && ch <= 'я';
а откуда уверенность, что они именно подряд стоят?
и, да, я помню, что буквы "Ё" и "ё" в ascii-таблице точно отдельно стоят от остальных.
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
27.06.2017, 13:40
GbaLog-, ну можно без них... в принципе сейчас с е почти все пишут

Добавлено через 36 секунд
Цитата Сообщение от GbaLog- Посмотреть сообщение
это точно весь код?
а что еще должно быть?

Добавлено через 2 минуты
поправочка:
C++
1
return (IsRusSymb(ch)) ? ((std::islower(ch)) ? replace(ch) : std::isupper(replace(ch))) : ch;
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
27.06.2017, 13:42
Цитата Сообщение от zarko97 Посмотреть сообщение
а что еще должно быть?
да ты уже скинул alpha.
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
27.06.2017, 13:44
GbaLog-, к сожалению std::isalpha для кириллице отсутсвует
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
27.06.2017, 13:46
Цитата Сообщение от zarko97 Посмотреть сообщение
std::isalpha для кириллице отсутсвует
http://en.cppreference.com/w/cpp/locale/isalpha
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.06.2017, 13:46
Цитата Сообщение от zarko97 Посмотреть сообщение
к сожалению std::isalpha для кириллице отсутсвует
Из cctype да, но вот std::isalpha из locale вполне умеет, только надо вторым параметром нужную локаль передавать.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.06.2017, 14:12
Цитата Сообщение от GbaLog- Посмотреть сообщение
http://en.cppreference.com/w/cpp/locale/isalpha
Цитата Сообщение от MrGluck Посмотреть сообщение
std::isalpha из locale вполне умеет, только надо вторым параметром нужную локаль передавать.
локаль - unspecified behavior

она ничего вам на герантирует.
более того, c++ так и не осилил моральные локали.

http://rextester.com/MLRZ37107

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// isalpha example (C++)
#include <iostream>       // std::cout
#include <string>         // std::string
#include <locale>         // std::locale, std::isalpha
 
int main ()
{
  std::locale loc("");      // <--- использовать нативную локаль операционной системы
  std::string str="привет";
 
  for (std::string::iterator it=str.begin(); it!=str.end(); ++it)
    if (std::isalpha(*it,loc))
      std::cout << "character " << *it << " is alphabetic\n";
    else
      std::cout << "character " << *it << " is not alphabetic\n";
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic
character � is not alphabetic

косяков здесь два:

1.
национальную локаль осилила только студия
(и то - с костылями и ограничениями)
а вот всякие gcc/mingw умеют только сишную локаль (ansi, английские буковки)
национальные символы идут на йух.

2.
с++ не умеет буквы алфавита в принципе.
и вот это уже конкретный фейл.
приплюснутая локаль - костыль,
который ущербен в своей сути.
он в принципе не сможет полноценно работать.

чар - это не символ.
это - байт.

соответственно, даже при наличии поддержки от поставщика,
работать сможет только нормализованные буковки
(которые влезут в char/wchar_t, и могут быть представлены одним знакоместом)

все прочие национальные приколы
(такие как представление одной буквы двумя символами (см немецкий), например)
работать не смогут в принципе.

итого:

либо вы юзаете толстые специализированные фремворки,
либо лучше сразу забыть об обработке национальных символов.
1
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
27.06.2017, 14:41
hoggy, а как с кириллицей ее подружить? при std::locale loc("rus") рантайм еррор
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
27.06.2017, 15:56
Цитата Сообщение от zarko97 Посмотреть сообщение
как с кириллицей ее подружить?
никак
0
 Аватар для zarko97
279 / 39 / 13
Регистрация: 11.10.2015
Сообщений: 405
28.06.2017, 00:23
hoggy, хмм http://ideone.com/RFJLh0

Добавлено через 1 минуту
hoggy, как вы и сказали

Добавлено через 3 часа 28 минут
Цитата Сообщение от GbaLog- Посмотреть сообщение
что они именно подряд стоят?
C++
1
2
3
4
bool is_russian_character(char ch) {
    return ((('А' <= ch) && (ch <= 'п')) ||
     (('р' <= ch) && (ch <= 'ё')));
    }
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
28.06.2017, 08:10
 Комментарий модератора 
Lado, пожалуйста, прочитайте правила форума.
Особое внимание обратите на следующие пункты:

.
0
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56
28.06.2017, 17:56  [ТС]
andreyananas, Огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.06.2017, 17:56

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

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

Каждую букву заменить на следующую за ней (буква я заменяется на а)
Каждая буква заменяется на следующую за ней (буква я заменяется на а). Используйте в задачах два класса строк Не могу заменить 'я' на...

Дан файл, содержащий зашифрованный русский текст, Каждая буква заменяет на следующий за ней , буква" я" заменяется на "а"
Дан файл, содержащий зашифрованный русский текст, Каждая буква заменяет на следующий за ней , буква&quot; я&quot; заменяется на...

Каждая цифра во введённой строке заменяется следующей по порядку, а 9 на 0
Помогите, пожалуйста, написать функцию, которая в строке каждую цифру заменяет на следующую за ней по порядку цифру. Цифру 9 заменить...


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

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

Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru