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

В строке продублироваать все английские буквы

26.10.2020, 22:35. Показов 1343. Ответов 8
Метки c++ (Все метки)

Нужна помощь. У меня есть код, который дублирует все английские буквы (рядом с найденными) в вводимой строке. И вроде бы он работает, но результат обработки он выводит некорректно. Т.е. например я ввожу qwe 123 ФЫВ йцу ASD и он должен вывести qqwwee 123 ФЫВ йцу AASSDD. А в итоге он выводит qqwwee 123 ">' сжг AASSDD. Я предполагаю, что дело в кодировке (точнее уверен в этом).
Сам код:
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
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
 
int main()
{
    string    input;             //Входная строка
    string    result;
    int     i;
    //SetConsoleCP(65001);
    //SetConsoleOutputCP(65001);
    setlocale(LC_CTYPE, "");
    cout << "Лабораторная работа №3\nСлепчатов Виктор, группа 19-ВТ2 Вариант 37\nЗадание: Продублировать все английские буквы (рядом с найденными)\n\n";
    cout << "Введите строку для обработки:\n";
    getline(cin, input);
    i = 0;
    while (input[i] != '\0') {
        result = result + input[i];
        if ((input[i] >= 'A' && input[i] <= 'Z') || (input[i] >= 'a' && input[i] <= 'z')) {
            result = result + input[i];
        }
        i++;
    }
    cout << result;
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2020, 22:35
Ответы с готовыми решениями:

Упорядочить английские буквы в строке по алфавиту
1.Упорядочить английские в строке по алфавиту

Необходимо в строке удалить только английские буквы
Необходимо в строке удалить только английские буквы. Наиболее быстрый вариант. ываыCGHHGролио12...

Определить, есть ли в строке хотя бы две одинаковые строчные английские буквы
Ввести строку символов s и определить, есть ли в строке s хотя бы две одинаковые строчные...

Вывести все введенные маленькие английские буквы.
Ввести фразу из английских букв (больших и маленьких). Вывести все введенные маленькие английские...

8
1157 / 820 / 357
Регистрация: 26.02.2015
Сообщений: 3,700
26.10.2020, 22:41 2
По-моему с 1251 должно быть лучше.
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
26.10.2020, 22:42  [ТС] 3
Цитата Сообщение от Nishen Посмотреть сообщение
По-моему с 1251 должно быть лучше.
Я его до этого пробовал - не сработало.
0
1157 / 820 / 357
Регистрация: 26.02.2015
Сообщений: 3,700
26.10.2020, 22:42 4
Да, дело в кодировке, потому что у меня на Linux все ок работает.
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
26.10.2020, 23:14  [ТС] 5
Тип кодировку надо перевести в UTF-8. В итоге в коде есть такие строки:
C++
1
2
3
    SetConsoleCP(65001);
    SetConsoleOutputCP(65001);
    setlocale(LC_CTYPE, "");
А в итоге выводит следующее
Миниатюры
В строке продублироваать все английские буквы  
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
26.10.2020, 23:29  [ТС] 6
Думаю надо так же отметить, что пишу я в Visual Studio.
0
2477 / 1904 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
27.10.2020, 06:36 7
строку 13 замените на эту
C++
1
system("chcp 1251");
1
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 78
27.10.2020, 18:31  [ТС] 8
Цитата Сообщение от igorrr37 Посмотреть сообщение
строку 13 замените на эту
не работает
Миниатюры
В строке продублироваать все английские буквы  
0
2477 / 1904 / 951
Регистрация: 21.12.2010
Сообщений: 3,473
Записей в блоге: 10
27.10.2020, 19:43 9
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
#include <iostream>
#include <string>
#include <Windows.h>
#include <locale.h>
using namespace std;
 
int main()
{
 
    string    input;             //Входная строка
    string    result;
    int     i;
    system("chcp 65001");
    cout << u8"Лабораторная работа №3\nСлепчатов Виктор, группа 19-ВТ2 Вариант 37\nЗадание: Продублировать все английские буквы (рядом с найденными)\n\n";
    cout << u8"Введите строку для обработки:\n";
    system("chcp 1251");
    getline(cin, input);
    i = 0;
    while (input[i] != '\0') {
        result = result + input[i];
        if ((input[i] >= 'A' && input[i] <= 'Z') || (input[i] >= 'a' && input[i] <= 'z')) {
            result = result + input[i];
        }
        i++;
    }
    cout << result;
    return 0;
}
 
// qwe 123 ФЫВ йцу ASD
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2020, 19:43
Помогаю со студенческими работами здесь

Удалить все английские согласные буквы из файла
Создать файл (file of char), удалить из него все английские согласные буквы. Вывести на экран...

Все ли английские буквы, входящие в текст, упорядочены по возрастанию.
Текст задан последовательностью литер, за которыми идет '.' . Написать программу, которая...

Заменить в строке все английские слова на многоточие
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются...

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B
Помогите решить эту задачу на питоне, пожалуйста- Замена a-b и наоборот Напишите...

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B
Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на...

Напишите программу, которая заменяет в символьной строке все буквы a на буквы b , a буквы A на буквы B
Здравствуйте,помогите пожалуйста написать программу .Напишите программу, которая заменяет в...


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

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

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