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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
m09
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
01.05.2013, 19:01     Разработать алгоритм и программу для решения задачи с использованием строк символов #1
Дана строка символов. Найти самое длинное слово, начинающееся с буквы ''я'', и вывести его в обратном порядке
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 19:01     Разработать алгоритм и программу для решения задачи с использованием строк символов
Посмотрите здесь:

Разработать алгоритм решения задачи обработки одномерного массива. C++
Разработать алгоритм и программу для решения задачи с использованием строк символов C++
C++ Разработать алгоритм и программу для решения задачи с использованием типа запись
Разработать алгоритм и программу для решения задачи C++
Составить универсальную программу для решения математической задачи используя разветвляющий алгоритм C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 19:22     Разработать алгоритм и программу для решения задачи с использованием строк символов #2
m09,

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string word, max;
    istringstream ii(_str);
 
    ii >> max;
    while(ii >> word){
        if(word[0] == 'я'){
            if(max.length() < word.length())
                max = word;
        }
    }
 
    cout << endl;
    copy(max.rbegin(), max.rend(), ostream_iterator<char>(cout));
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("яа яая яаая яабиг аая яая");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 19:53     Разработать алгоритм и программу для решения задачи с использованием строк символов #3
yoghurt92, а если запятая?
Код
"яа яая я,аая яабиг аая яая"
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:01     Разработать алгоритм и программу для решения задачи с использованием строк символов #4
BumerangSP, ну так слова же отделены пробелами хотя вы правы, в этом случае код будет работать не верно
BumerangSP
01.05.2013, 20:10
  #5

Не по теме:

yoghurt92, слова могут быть разделены чем угодно кроме буквы, наверное. Это стоит учитывать)

yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:28     Разработать алгоритм и программу для решения задачи с использованием строк символов #6
может не очень хорошо, но по быстрому исправил справедливое замечание BumerangSP

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos_m, pos_m2;
 
    pos_m = _str.find_first_not_of(delim);
 
    if(pos_m != string::npos){
        pos_m2 = _str.find_first_of(delim, pos_m);
 
        string::size_type pos1(pos_m2), pos2(0);
        while(pos1 != string::npos){
            pos1 = _str.find_first_not_of(delim, pos1);
 
            if(pos1 != string::npos){
                pos2 = _str.find_first_of(delim, pos1);
                if(pos2 == string::npos)
                    pos2 = _str.length();
            }
 
            if((pos2 - pos1) > (pos_m2 - pos_m)){
                pos_m = pos1;
                pos_m2 = pos2;
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    for(string::size_type i = pos_m2 - 1; i >= pos_m; --i)
        cout << _str[i];
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("яа яая я,аая яабиг аая яая");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 20:34     Разработать алгоритм и программу для решения задачи с использованием строк символов #7
yoghurt92, теперь она, видимо, просто самое большое слово ищет
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:42     Разработать алгоритм и программу для решения задачи с использованием строк символов #8
BumerangSP, блин, это моя не внимательность, она когда-то меня погубит
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 21:01     Разработать алгоритм и программу для решения задачи с использованием строк символов #9

Не по теме:

А также висит при:

Код
" za zaz azzzaaz zabig aaz zaz , "
В общем, там хватит работы)
В смысле, вместо z там я. Я просто тестил на z))



Добавлено через 12 минут
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
#include <iostream>
#include <string>
#include <algorithm>
#include <locale>
std::string longWord(const std::string str, const char* tokens = ", .?!")
{
    size_t beginPos = 0, nextPos = 0;
    std::string word;
    if ((beginPos = str.find_first_of(tokens)) != 0)
    {
        word = str.substr(0, beginPos);
    }
    while((beginPos = str.find_first_of(tokens, nextPos)) != std::string::npos)
    {
        if ((nextPos = str.find_first_of(tokens, beginPos + 1)) == std::string::npos)
            nextPos = str.size();
        if ((nextPos - beginPos) > 1)
        {
            std::string bufWord = str.substr(beginPos + 1, nextPos - (beginPos + 1));
            if (word.size() < bufWord.size() && bufWord[0] == 'я')
                word = bufWord;
        }
    } 
    std::reverse(word.begin(), word.end());
    return word; 
}
int main()
{
    setlocale(0, "Rus");
    std::cout << longWord(" .a..ятоуыся я,аая яабиг аая яая ef sd,.f.sd dfsd а ав") << '\n';
    system("pause");
    return 0;
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 21:05     Разработать алгоритм и программу для решения задачи с использованием строк символов #10


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 <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos1(0), pos2(0), pos_m(0), pos_m2(0);
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        }
            
        if(_str[pos1] == 'я'){
            if((pos2 - pos1) > (pos_m2 - pos_m)){
                pos_m = pos1;
                pos_m2 = pos2;
            }
        }
 
        if(pos2 == _str.length())
            pos1 = string::npos;
        else
            pos1 = pos2;
    }
 
    cout << endl;
    if(pos_m2 != 0){
        for(string::size_type i = pos_m2 - 1; i >= pos_m; --i)
            cout << _str[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str(" .a..ятоуыся я,аая яабиг аая яая ef sd,.f.sd dfsd а ав");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 21:14     Разработать алгоритм и программу для решения задачи с использованием строк символов #11
см. скрин.
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 21:21     Разработать алгоритм и программу для решения задачи с использованием строк символов #12
BumerangSP,

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos1(0), pos2(0), pos_m(0), pos_m2(0);
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        
            
            if(_str[pos1] == 'я'){
                if((pos2 - pos1) > (pos_m2 - pos_m)){
                    pos_m = pos1;
                    pos_m2 = pos2;
                }
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    if(pos_m2 != 0){
        for(string::size_type i = pos_m2 - 1; i >= pos_m; --i)
            cout << _str[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("яа яая аяяяаая яаааа аая яая , ");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 21:34     Разработать алгоритм и программу для решения задачи с использованием строк символов #13
Так и будем по одной ошибке вылавливать?
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 22:05     Разработать алгоритм и программу для решения задачи с использованием строк символов #14
BumerangSP, что-то я совсем вроде потестил нормально, скажите если что не так

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos_m, pos_m2;
    pos_m = _str.find_first_not_of(delim);
    pos_m2 = _str.find_first_of(delim, pos_m);
 
    string::size_type pos1(pos_m2), pos2;
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        
            if(_str[pos1] == 'я'){
                if((pos2 - pos1) > (pos_m2 - pos_m)){
                    pos_m = pos1;
                    pos_m2 = pos2;
                }
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    if(pos_m2 != string::npos){
        for(int i = pos_m2 - 1; i >= static_cast<int>(pos_m); i--)
            cout << _str[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str(" .a..ятоуыся я,аая яабиг аая яая ef sd,.f.sd dfsd а ав");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 22:28     Разработать алгоритм и программу для решения задачи с использованием строк символов #15
есть еще косячок с выводом:
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 22:46     Разработать алгоритм и программу для решения задачи с использованием строк символов #16
BumerangSP,

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos_m, pos_m2, pos1, pos2;;
    pos_m = _str.find_first_not_of(delim);
 
    if(pos_m != string::npos){
        pos_m2 = _str.find_first_of(delim, pos_m);
        if(pos_m2 == string::npos && _str[pos_m] == 'я'){
            pos1 = string::npos;
            pos_m2 = _str.length();
        }
        else{
            pos1 = pos_m2;
            pos_m = pos_m2 = string::npos;
        }
    }
 
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        
            if(_str[pos1] == 'я'){
                if((pos2 - pos1) > (pos_m2 - pos_m)){
                    pos_m = pos1;
                    pos_m2 = pos2;
                }
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    if(pos_m2 != string::npos){
        for(int i = pos_m2 - 1; i >= static_cast<int>(pos_m); i--)
            cout << _str[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("яру");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.05.2013, 01:52     Разработать алгоритм и программу для решения задачи с использованием строк символов #17
yoghurt92, шило на мыло
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.05.2013, 12:16     Разработать алгоритм и программу для решения задачи с использованием строк символов #18
BumerangSP, вроде проверил на разные примеры, жду что вы найдете

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos_m, pos_m2, pos1, pos2;;
    pos_m = _str.find_first_not_of(delim);
 
    if(pos_m != string::npos){
        pos_m2 = _str.find_first_of(delim, pos_m);
        if(pos_m2 == string::npos && _str[pos_m] == 'я'){
            pos1 = string::npos;
            pos_m2 = _str.length();
        }
        else
            pos1 = pos_m2;
    }
 
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        
            if(_str[pos1] == 'я'){
                if((pos2 - pos1) > (pos_m2 - pos_m)){
                    pos_m = pos1;
                    pos_m2 = pos2;
                }
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    if(pos_m2 != string::npos){
        for(int i = pos_m2 - 1; i >= static_cast<int>(pos_m); i--)
            cout << _str[i];
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("авлрла ,юялоала авялав япаы,яовывапвы , . я");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.05.2013, 13:05     Разработать алгоритм и программу для решения задачи с использованием строк символов #19
Самый первый тест.
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 13:22     Разработать алгоритм и программу для решения задачи с использованием строк символов
Еще ссылки по теме:

C++ Разработать блок-схему и программу для решения задачи с использованием типа структура
C++ Разработать алгоритм и программу для определения процента гласных символов в тексте!
C++ Разработать программу для решения задачи из нижеприведенных положений теории чисел

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

Или воспользуйтесь поиском по форуму:
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.05.2013, 13:22     Разработать алгоритм и программу для решения задачи с использованием строк символов #20
BumerangSP,

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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    string::size_type pos_m, pos_m2, pos1, pos2;;
    pos_m = _str.find_first_not_of(delim);
 
    if(pos_m != string::npos){
        pos_m2 = _str.find_first_of(delim, pos_m);
        if(pos_m2 == string::npos && _str[pos_m] == 'я'){
            pos1 = string::npos;
            pos_m2 = _str.length();
        }
        else if(pos_m2 == string::npos && _str[pos_m] != 'я'){
            pos_m2 = string::npos;
            pos1 = string::npos;
        }
        else if(pos_m2 != string::npos && _str[pos_m] != 'я'){
            pos1 = pos_m2;
            pos_m = pos_m2 = 0;
        }
        else
            pos1 = pos_m2;
        
    }
 
    while(pos1 != string::npos){
        pos1 = _str.find_first_not_of(delim, pos1);
 
        if(pos1 != string::npos){
            pos2 = _str.find_first_of(delim, pos1);
            if(pos2 == string::npos)
                pos2 = _str.length();
        
            if(_str[pos1] == 'я'){
                if((pos2 - pos1) > (pos_m2 - pos_m)){
                    pos_m = pos1;
                    pos_m2 = pos2;
                }
            }
 
            if(pos2 == _str.length())
                pos1 = string::npos;
            else
                pos1 = pos2;
        }
    }
 
    cout << endl;
    if(pos_m2 != string::npos){
        for(int i = pos_m2 - 1; i >= static_cast<int>(pos_m); i--)
            cout << _str[i];
    }
    else
        cout << "Таких слов нет!";
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    string str("ярy");
    copy(str.begin(), str.end(), ostream_iterator<char>(cout));
    find_word(str);
 
    cout << "\n\n";
    return 0;
}
Yandex
Объявления
02.05.2013, 13:22     Разработать алгоритм и программу для решения задачи с использованием строк символов
Ответ Создать тему
Опции темы

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