Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
1

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

01.05.2013, 19:01. Показов 2488. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана строка символов. Найти самое длинное слово, начинающееся с буквы ''я'', и вывести его в обратном порядке
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2013, 19:01
Ответы с готовыми решениями:

Разработать алгоритм и программу для решения задачи с использованием строк символов
Дана строка символов. Определить количество слов, начинающихся с буквы ''а'', вывести на печать...

Разработать алгоритм и программу для решения задачи с использованием типа запись
Даны сведения о студентах группы: ФИО студента, дата рождения студента, место рождения студента....

Разработать алгоритм и программу для решения задачи
Дан файл f, компоненты которого являются действительными числами. Найти: а) сумму компонент...

Разработать блок-схему и программу для решения задачи с использованием типа структура
Разработать блок-схему и программу для решения задачи с использованием типа структура. 1. Даны...

29
381 / 352 / 113
Регистрация: 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;
}
1
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
01.05.2013, 19:53 3
yoghurt92, а если запятая?
Код
"яа яая я,аая яабиг аая яая"
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:01 4
BumerangSP, ну так слова же отделены пробелами хотя вы правы, в этом случае код будет работать не верно
0
BumerangSP
01.05.2013, 20:10
  #5

Не по теме:

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

0
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
01.05.2013, 20:34 7
yoghurt92, теперь она, видимо, просто самое большое слово ищет
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:42 8
BumerangSP, блин, это моя не внимательность, она когда-то меня погубит
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 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;
}
0
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
01.05.2013, 21:14 11
см. скрин.
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
1
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
01.05.2013, 21:34 13
Так и будем по одной ошибке вылавливать?
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
0
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
01.05.2013, 22:28 15
есть еще косячок с выводом:
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
1
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
02.05.2013, 01:52 17
yoghurt92, шило на мыло
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
1
381 / 352 / 113
Регистрация: 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;
}
0
4311 / 1422 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
02.05.2013, 13:05 19
Самый первый тест.
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
0
381 / 352 / 113
Регистрация: 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;
}
0
02.05.2013, 13:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.05.2013, 13:22
Помогаю со студенческими работами здесь

Разработать программу для решения задачи из нижеприведенных положений теории чисел
Лабораторная работа №6 Разработать программу для решения задачи из нижеприведенных положений...

Напишите программу для решения предложенной задачи с использованием пользовательских функций
1) Составить текст 2) Описать реализованый в программе алгоритм свесно-формульно и спомощью блок...

Разработать алгоритм решения задачи
Прошу помогите уже 3 час сижу никак не могу сделать алгоритм для 5 варианта вроде всё просто, но...

Составить универсальную программу для решения математической задачи используя разветвляющий алгоритм
Задание: составить универсальную программу для решения математической задачи используя...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru