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

Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз - C++

Восстановить пароль Регистрация
 
Подсолнух
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 94
06.05.2010, 22:03     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз #1
Ребят помогите сро4но, 2 задачи не полу4аются, буду признателен если поможете!!!
1.Дан текст, состоящий не менее чем из пяти слов. Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз. Например, молоко.
2.Рациональное число можно представить записью с двумя полями: числитель и знаменатель. Дан массив из N рациональных чисел. Разработать функцию для нахождения максимального среди них.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2010, 22:03     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз
Посмотрите здесь:

Ввести строку, в которую могут входить только цифры и буквы C++
C++ Напечатать только те буквы слов, которые встречаются в обоих словах только один раз
Подсчитать, сколько раз в строке встречаются одинаковые слова C++
C++ Напечатать только те буквы слов, котрые встречаются в обоих словах только один раз
C++ Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
07.05.2010, 13:51     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз #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
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
//MS VS
//Рациональное число можно представить записью с двумя полями: 
//числитель и знаменатель. Дан массив из N рациональных чисел. 
//Разработать функцию для нахождения максимального среди них. 
 
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>
 
struct T_rational_num
{
    int chisl;
    int znam;
};
 
typedef std::vector<T_rational_num> T_rat_nums;
 
bool operator<(T_rational_num  l, T_rational_num  r)
{
    return l.chisl * r.znam < l.znam * r.chisl;
}
 
std::ostream& operator<<(std::ostream& os, const T_rational_num& rn)
{
    os << rn.chisl << '/' << rn.znam;
    return os;
}
 
T_rational_num  get_max_rat_num(T_rat_nums  rns)
{
    return *std::max_element(rns.begin(), rns.end());
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    unsigned        count;
    T_rational_num  cur_rat_num;
    T_rat_nums      rat_nums;
    for(;;)
    {
        rat_nums.clear();
        do
        {
            std::cout << "Input num count from [1, 10]: ";
            std::cin >> count;
        }while(count < 1 || count > 10);
 
        for(int i = 0; i < count; ++i)
        {
            std::cout << std::endl                      
                      << "Input chisl["
                      << i + 1
                      << "]: ";
            std::cin >> cur_rat_num.chisl;
 
            std::cout << "Input  znam["
                      << i + 1
                      << "]: ";
            std::cin >> cur_rat_num.znam;            
            rat_nums.push_back(cur_rat_num);        
        }
 
        std::cout << std::endl                  
                  << "Rational nums: "; 
        for(int i = 0; i < count; ++i)
        {
            std::cout << rat_nums[i] << ' ';
        }
        std::cout << std::endl
                  << "Max rational num: "
                  << get_max_rat_num(rat_nums)
                  << std::endl
                  << std::endl
                  << std::endl;                
    }
    return 0;
}
Добавлено через 31 минуту
Задача № 1

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
//MS VS
//Дан текст, состоящий не менее чем из пяти слов. Сформировать строку, 
//в которую попадут только те слова, где одинаковые буквы встречаются более двух раз. 
//Например, молоко.
 
#include "stdafx.h"
#include <iostream>
#include <string>
#include <cstdio>
#include <sstream>
#include <algorithm>
 
bool correct_word(std::string word)
{
    for(size_t i = 0; i < word.length(); ++i)
    {
        size_t symb_count = std::count(word.begin(), word.end(), word[i]);
        if(symb_count > 2) return true;
    }
    return false;
}
 
std::string transform_text(std::string txt)
{
    std::string res_str;
    std::istringstream text_instream(txt);
    std::string cur_word;
 
    while(text_instream >> cur_word)
    {
        if(correct_word(cur_word))
        {
            res_str += (' ' + cur_word);
        }        
    }   
    return res_str;
}
 
int _tmain(int argc, _TCHAR* argv[])
{    
    std::string text;
    
    for(;;)
    {
        std::cout << "Input text: ";
        getline(std::cin, text);
        std::cout << "Transformed text:"
                  << transform_text(text)
                  << std::endl
                  << std::endl
                  << std::endl;
    }
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
07.05.2010, 14:23     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз #3
Для разнообразия
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
#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
 
bool isGood(const std::string& s, size_t margin){
    for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i )
        if ( std::count(s.begin(), s.end(), *i) > margin )
            return true;
    return false;
}
 
int main(){
    std::string str, buf;
    const int NEEDED_MORE = 2;
    
    while ( true ){
        std::cout << "String: ";
        std::getline(std::cin, str);
        if ( str.empty() )
            break;
        std::ostringstream res;
        std::istringstream ist(str);
        while ( ist >> buf )
            if ( isGood(buf, NEEDED_MORE) )
                res << buf << ' ';
        std::cout << "Result: " << res.str() << std::endl;
    }
    
    return 0;
}
Подсолнух
1 / 1 / 0
Регистрация: 28.03.2010
Сообщений: 94
07.05.2010, 16:31  [ТС]     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз #4
Спасибо большое, красавчик просто), норм, работает)))
HelenDark
0 / 0 / 0
Регистрация: 14.04.2015
Сообщений: 32
14.04.2015, 18:21     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз #5
ребят,а можете написать 2 задачу более просто? и если можно,с объяснением.. препод ни в какую это принимать не хочет((
Yandex
Объявления
14.04.2015, 18:21     Сформировать строку, в которую попадут только те слова, где одинаковые буквы встречаются более двух раз
Ответ Создать тему
Опции темы

Текущее время: 03:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru