Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
flores1
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 4
1

Найти слово содержащее наибольшее количество цифр

11.12.2018, 21:26. Просмотров 1816. Ответов 10

Нужно напечатать слово, содержащее наибольшее количество цифр и ещё одно слово с наибольшим количеством латинских букв.
Не понимаю как проверять каждое слово и потом выводить именно его, хелп!

Добавлено через 14 минут
На C++
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2018, 21:26
Ответы с готовыми решениями:

Вывести слово, содержащее наибольшее количество цифр и вывести число цифр в слове
Дана строка. Исключить из нее подстроку, расположенную между самой левой открывающейся скобкой «(»...

Найти слово, содержащее наибольшее количество символов
Ввести с клавиатуры одномерный строковый массив и найти слово, содержащее наибольшее количество...

Найти в тексте слово, содержащее наибольшее количество гласных
выкладываю код. задача проги-найти в тексте слово, содержащее наибольшее количество гласных, и...

Найти в строке слово, содержащее наибольшее количество заданных букв
Дана строка, содержащая текст на русском языке, и некоторая буква. Найти слово, содержащее...

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

10
Verevkin
2601 / 1390 / 346
Регистрация: 12.03.2015
Сообщений: 7,453
11.12.2018, 21:30 2
А где исходные данные?
1
flores1
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 4
11.12.2018, 21:32  [ТС] 3
Строка например = "asd231 33333 dddddd"
0
mvngr
183 / 144 / 88
Регистрация: 15.04.2018
Сообщений: 568
11.12.2018, 21:33 4
Лучший ответ Сообщение было отмечено flores1 как решение

Решение

А самому попробывать?

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
#include <iostream>
 
using namespace std;
 
int main()
{
    string mostLat, mostNum, input;
    int latinCount, numCount;
    int latinMax = 0, numMax = 0;
    for(int i = 0; i < 5; i++) //Вводим пять слов
    {
        cin >> input;
 
        //смотрим слово на предмет самого латинского
        latinCount = 0;
        for(size_t i = 0; i < input.size(); i++) //проходимся по всему слову
        {
            if( (input[i] > 'a' && input[i] < 'z') || (input[i] > 'A' && input[i] < 'Z')) //если влезает в границы латиницы
                latinCount++; //увеличиваем счетчик на 1
        }
        if(latinCount >= latinMax) //если счетчик больше максимального
        {
            latinMax = latinCount; //делаем его максимальным
            mostLat = input; //и запоминаем слово
        }
        //а теперь на предмет самого числового
        numCount = 0;
        for(size_t i = 0; i < input.size(); i++)
        {
            if( (input[i] > '0' && input[i] < '9') )
                numCount++;
        }
        if(numCount >= numMax)
        {
            numMax = numCount;
            mostNum = input;
        }
    }
 
    cout << "Latin: " << mostLat << endl << "Number: " << mostNum << endl;
 
    return 0;
}
Код
abcd
000000
123
ammmmmmm
a1b2c3
Latin: ammmmmmm
Number: a1b2c3
Press <RETURN> to close this window...
Если не понятно почему size_t - из-за размерностей. Подробнее - гугли, либо впиши вместо size_t int и не парься, препод ругать не будет
2
11.12.2018, 21:33
flores1
0 / 0 / 0
Регистрация: 11.12.2018
Сообщений: 4
11.12.2018, 21:35  [ТС] 5
thanx!
0
marat_miaki
248 / 209 / 116
Регистрация: 08.04.2013
Сообщений: 901
11.12.2018, 22:02 6
mvngr, из 21 и 33 строки надо убрать знак =, если нет слов с латинскими или цифрами срабатывает последнее слово
0
mvngr
183 / 144 / 88
Регистрация: 15.04.2018
Сообщений: 568
11.12.2018, 22:08 7
marat_miaki, upd: лажанул, вы правы
0
Yetty
3045 / 2112 / 1372
Регистрация: 18.12.2017
Сообщений: 6,740
11.12.2018, 22:26 8
mvngr, ТС вроде произвольная строка нужна, а не 5 слов
0
marat_miaki
248 / 209 / 116
Регистрация: 08.04.2013
Сообщений: 901
11.12.2018, 22:39 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
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
#include <sstream>
 
int main()
{
    std::string str = "Из этой группы 14 слов содержащих латинские буквы eklmn выделить самое главное - Знания";
    std::string word, mostLat, mostNum;
    std::istringstream ins(str);
    int latinCount, numCount;
    int latinMax = 0, numMax = 0;
     
    while(ins >> word){
       latinCount = 0;
        for(size_t i = 0; i < word.size(); i++) //проходимся по всему слову
        {
            if( (word[i] > 'a' && word[i] < 'z') || (word[i] > 'A' && word[i] < 'Z')) //если влезает в границы латиницы
                latinCount++; //увеличиваем счетчик на 1
        }
        if(latinCount > latinMax) //если счетчик больше максимального
        {
            latinMax = latinCount; //делаем его максимальным
            mostLat = word; //и запоминаем слово
        }
        //а теперь на предмет самого числового
        numCount = 0;
        for(size_t i = 0; i < word.size(); i++)
        {
            if( (word[i] > '0' && word[i] < '9') )
                numCount++;
        }
        if(numCount > numMax)
        {
            numMax = numCount;
            mostNum = word;
        }
    }
        std::cout << "Latin: " << mostLat << std::endl << "Number: " << mostNum << std::endl;
    return 0;
}
0
Yetty
3045 / 2112 / 1372
Регистрация: 18.12.2017
Сообщений: 6,740
12.12.2018, 00:34 10
Лучший ответ Сообщение было отмечено flores1 как решение

Решение

mvngr, marat_miaki, условия в неравенствах должны быть не строгие и вполне достаточно одного цикла.

flores1,
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    string s, word, mostDig, mostLet;
    cout << "String:\n";
    getline(cin, s);
    int i, count_letters, count_digits, max_letters=0, max_digits=0;    
     
    stringstream words(s);
    while (words >> word)
    {
        i=0;
        count_letters=0;
        count_digits=0;
        while(word[i])         
        {        
            if(word[i] >= '0' && word[i] <= '9') count_digits++;
            if((word[i] >= 'a' && word[i] <= 'z') || (word[i] >= 'A' && word[i] <= 'Z')) count_letters++;
            i++;        
        }
        if(count_digits > max_digits) {max_digits=count_digits; mostDig=word;}
        if(count_letters > max_letters) {max_letters=count_letters; mostLet=word;}
    }
    
    cout <<"Word with max digits: "<<mostDig<<"\nWord with max letters: "<<mostLet<<"\n";
system("pause");
return 0;
}
код выведет первое слово с наибольшим количеством цифр и первое слово с наибольшим количеством латинских букв.
считал, что в введённой строке заведомо есть цифры и латинские буквы. проверку на отсутствие (например в строке нет цифр) не добавлял, можете добавить самостоятельно если нужно.
1
mvngr
183 / 144 / 88
Регистрация: 15.04.2018
Сообщений: 568
12.12.2018, 19:15 11
Yetty, вообще, в задании даже ничего про ввод данных не сказано. Так что я выбрал как мне удобнее
0
12.12.2018, 19:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2018, 19:15

Во введенной строке найти слово, содержащее наибольшее количество разных букв
Во введенной строке найти слово, содержащее наибольшее количество разных букв (слова разделяются...

В заданных текстовых файлах найти слово содержащее наибольшее количество указанных букв
даны файлы содержащий текст и некоторые буквы найти слово содержанее наибольшее количество...

Ввести строку, вывести слово, содержащее наибольшее количество гласных букв
Привет Ребят,мне нужно сделать лабораторную по информатике,вот что мне надо Ввести строку,...


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

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

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