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

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

Войти
Регистрация
Восстановить пароль
 
Алина1234
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 51
#1

Дана строка. Вычеркнуть из нее все русские заглавные буквы - C++

08.07.2015, 10:06. Просмотров 396. Ответов 7
Метки нет (Все метки)

Помогите составить код задачи: дана строка. Вычеркнуть из нее все русские заглавные буквы.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 10:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дана строка. Вычеркнуть из нее все русские заглавные буквы (C++):

Дана строка. Заменить в ней все строчные (латинские и русские) буквы соответствующими заглавными. - C++
8.2.1. Помогите, пожалуйста, решить задачу в С++. Дана строка. Заменить в ней все строчные (латинские и русские) буквы...

Дана строка символов до точки. Выделить в ней все русские буквы, сделав их заглавными - C++
Дана строка символов до точки. Выделить в ней все русские буквы, сделав их заглавными

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

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

Дана строка. Удалить из нее все лишние пробелы - C++
Дана строка. Удалить из нее все лишние пробелы, оставив между словами не более одного. Результат поместить в новую строку.

Дана символьная строка, удалить из нее путем сдвига все цифры - C++
1) Дана символьная строка, удалить из нее путем сдвига все цифры 2) Дан массив символьных строк, найти номер строки с максимальным числом...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
D_Gon
24 / 13 / 5
Регистрация: 09.07.2015
Сообщений: 47
11.07.2015, 08:53 #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
#include <iostream>
#include <string>
#include <clocale>
 
void f( std::string &s ){
    
    char rus[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
    
    for ( int i = 0; i < s.size(); ++i )
        for ( int j = 0; rus[ j ] != '\0'; ++j )
            if ( s[ i ] == rus[ j ] )
                s.erase( i, 1 );
}
 
int main(){
 
    std::string s = "Папа, Мама";
    f( s );
    
    setlocale(LC_ALL, "Russian");
    std::cout << s << std::endl;
 
    return 0;
}
0
DrunkProgrammer
37 / 27 / 6
Регистрация: 09.06.2015
Сообщений: 100
11.07.2015, 10:22 #3
Цитата Сообщение от D_Gon Посмотреть сообщение
C++
1
2
3
4
5
char rus[] = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
for ( int i = 0; i < s.size(); ++i )
    for ( int j = 0; rus[ j ] != '\0'; ++j )
        if ( s[ i ] == rus[ j ] )
            s.erase( i, 1 );
А не проще будет по коду символа?

C++
1
2
3
4
5
6
 for (int i = 0; i < s.size(); i++){ 
    if((s[i] > 'А') && (s[i] < 'Я')){ 
        s.erase(i,1); 
        break;
    }
}
1
D_Gon
24 / 13 / 5
Регистрация: 09.07.2015
Сообщений: 47
11.07.2015, 10:35 #4
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
А не проще будет по коду символа?
Я просто не уверен что в заданой кодировке они подряд будут идти.
0
S_el
2100 / 1611 / 308
Регистрация: 15.12.2013
Сообщений: 6,451
11.07.2015, 10:37 #5
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
А не проще будет по коду символа?
Проще.А еще можно STL использовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
# include <algorithm>
#include <clocale>
 
int main(){
    setlocale(LC_ALL, "Russian");
    std::string s = "Папа, Мама";
 
    auto p = std::remove_if(s.begin(),s.end(),[](char &p)
    {
        return (p >= 'А') && (p <= 'Я');
    });
    s.erase(p,s.end());
    std::cout << s << std::endl;
 
    return 0;
}
0
DrunkProgrammer
37 / 27 / 6
Регистрация: 09.06.2015
Сообщений: 100
11.07.2015, 10:38 #6
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
C++
1
2
3
4
5
6
for (int i = 0; i < s.size(); i++){ 
     if((s[i] > 'А') && (s[i] < 'Я')){ 
        s.erase(i,1); 
    break;
    }
}
Извиняюсь, Ошибочка.

C++
1
2
3
4
5
6
for (int i = 0; i < s.size(); i++){ 
    if((s[i] > 'А') && (s[i] < 'Я')){ 
        s.erase(i,1); 
        i--;
    }
}
к тому же
Цитата Сообщение от D_Gon Посмотреть сообщение
C++
1
2
3
4
for ( int i = 0; i < s.size(); ++i )
    for ( int j = 0; rus[ j ] != '\0'; ++j )
         if ( s[ i ] == rus[ j ] )
            s.erase( i, 1 );
работать не будет, если пойдут подряд 2 заглавные буквы и вторая будет находиться "раньше" первой в массиве rus. Ну и вылет за границы массива, если строка будет оканчиваться на последовательность из нескольких заглавных русских символов
1
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.07.2015, 10:46 #7
S_el, можно и STL, ну суть то та же что там цикл, что в STL тот же цикл
0
S_el
2100 / 1611 / 308
Регистрация: 15.12.2013
Сообщений: 6,451
11.07.2015, 11:20 #8
Цитата Сообщение от D_Gon Посмотреть сообщение
Я просто не уверен что в заданой кодировке они подряд будут идти.
По идее они должны подряд идти в любой кодировке.

Цитата Сообщение от Ev[G]eN Посмотреть сообщение
Можно и STL, ну суть то та же
Конечно.Но кода меньше
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2015, 11:20
Привет! Вот еще темы с ответами:

CharToOem заглавные русские буквы - C++
не могу понять почему не пишутся русские заглавные буквы. передаю параметр в программу /label &quot;Иванов И.В&quot; После преобразования...

Дана строка S и натуральное число N. Создать новую строку, включив в нее все слова из N букв исходной строки - C++
Дана строка S и натуральное число N. Cформировать новую строку, включив в нее все N-буквенные слова исходной строки. Слова в результирующей...

Дана строка. Напечатать все слова из нее , отличные от слова hello - C++
Дана строка. Напечатать все слова из нее , отличные от слова hello.

Дана строка. Выведите на экран все номера буквы «Ф» и букву «Ф» - C++
напишите плиииз все задачу,в школе задали 8 я тока 6 сделал короче напишите умоляю


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.07.2015, 11:20
Ответ Создать тему
Опции темы

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