Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 06.01.2017
Сообщений: 56

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

26.06.2017, 22:43. Показов 5395. Ответов 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 на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru