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

Удалить лишние пропуски в введенной строке символов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ наследования http://www.cyberforum.ru/cpp-beginners/thread96314.html
Приведите пожалуйста пару примеров наследования.
C++ из строки --> Число Есть строка "10000111" -> в переменную int b.??????Плизззз http://www.cyberforum.ru/cpp-beginners/thread96300.html
C++ сумма элементов бинарного дерева
Здраствуйте, помогите, пожалуйста, написать прогу. Задача: Найти сумму с 3 по 6 элементов левой ветки, а также с 1 по 3 элемент правой ветки(сумму записать в одну переменную)
C++ Удалить столбец матрицы(а не просто невыводить)
Помогите удалить столбец матрицы в которой содержится максимальный элемент. массив динамический. главное не просто не выводить, а именно удалить и указать номер удаленного столбца.
C++ Поменять знак всех локальных максимумов http://www.cyberforum.ru/cpp-beginners/thread96277.html
Дана матрица размера M на N. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу. Задача на С
C++ Найти количество элементов Дано целое число N и набор из N целых чисел. Найти количество элементов, расположенных перед первым минимальным элементом. Масив не использовать. Задача С подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,608
20.02.2010, 16:07
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
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <string>
#include <map>
#include <iomanip>
#include <cctype>
 
/* Посчитать частоту появления букв в строке, если считать ровными буквы в верхнем и нижнем регистре. */
 
int main(){
    std::string buf;
    std::map<char, int> letters;
    char c;
    
    std::cout << "String: ";
    std::getline(std::cin, buf);
    for ( std::string::const_iterator i = buf.begin(); i != buf.end(); ++i ){
        if ( !isalpha(*i) )
            continue;
        c = toupper(*i);
        std::map<char, int>::iterator f;
        if ( ( f = letters.find(c) ) != letters.end() )
            ++(f->second);
        else
            letters.insert(std::pair<char, int>(c, 1));
    }
    
    if ( letters.empty() ){
        std::cerr << "Bad input or somethink" << std::endl;
        return 1;
    }
    
    std::cout << "Charcter  Count" << std::endl;
    for ( std::map<char, int>::const_iterator i = letters.begin(); i != letters.end(); ++i )
        std::cout << std::setw(10) << std::left << i->first << i->second << std::endl;
    
    return 0;
}
Добавлено через 36 минут
4.
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
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <map>
#include <cctype>
 
/* В строке слов из букв латинского алфавита найти слова, в которых нет букв, которые повторяются. */
 
bool uniqueChars(const std::string& str){
    char c;
    std::map<char, int> letters;
    for ( std::string::const_iterator i = str.begin(); i != str.end(); ++i ){
        if ( !isalpha(*i) )
            continue;
        c = toupper(*i);
        if ( letters.find(c) != letters.end() )
            ++(letters[c]);
        else
            letters.insert(std::pair<char, int>(c, 1));
    }
    for ( std::map<char,int>::const_iterator i = letters.begin(); i != letters.end(); ++i )
        if ( i->second > 1 )
            return false;
    return true;
}
 
int main(){
    std::string str;
    std::vector<std::string> words;
    
    std::cout << "String: ";
    std::getline(std::cin, str);
    if ( str.empty() ){
        std::cerr << "Empty strings not allowed!" << std::endl;
        return 1;
    }
    std::istringstream ist(str);
    std::string tmp;
    while ( ist >> tmp )
        words.push_back(tmp);
    if ( words.empty() ){
        std::cerr << "Bad input!" << std::endl;
        return 1;
    }
    for ( std::vector<std::string>::const_iterator i = words.begin(); i != words.end(); ++i )
        if ( uniqueChars(*i) )
            std::cout << *i << ' ';
    std::cout << std::endl;
    
    return 0;
}
Добавлено через 23 минуты
Четвёртое можно, конечно, гораздо проще сделать. Хотелось ++(letters[c]); проверить.
5.
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
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
 
/* В строке слов из букв латинского алфавита найти слова, в которых первая буква слова входит еще хотя бы один раз. */
 
bool doublingFirstChar(const std::string& s){
    for ( std::string::const_iterator i = s.begin() + 1; i != s.end(); ++i )
        if ( toupper(*i) == toupper(*s.begin()) )
            return true;
    return false;
}
 
int main(){
    std::string str;
    std::cout << "String: ";
    std::getline(std::cin, str);
    
    std::istringstream ist(str);
    std::string tmp;
    while ( ist >> tmp )
        if ( doublingFirstChar(tmp) )
            std::cout << tmp << ' ';
    std::cout << std::endl;
    
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru