С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
m09
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
#1

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

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

Дана строка символов. Найти самое длинное слово, начинающееся с буквы ''я'', и вывести его в обратном порядке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2013, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разработать алгоритм и программу для решения задачи с использованием строк символов (C++):

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

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

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

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

Разработать программу для решения задачи из нижеприведенных положений теории чисел - C++
Лабораторная работа №6 Разработать программу для решения задачи из нижеприведенных положений теории чисел: 1. Функция Эйлера; ...

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

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

Не по теме:

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

0
yoghurt92
374 / 345 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 20:34 #7
yoghurt92, теперь она, видимо, просто самое большое слово ищет
0
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
01.05.2013, 20:42 #8
BumerangSP, блин, это моя не внимательность, она когда-то меня погубит
0
BumerangSP
4287 / 1409 / 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;
}
0
yoghurt92
374 / 345 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 21:14 #11
см. скрин.
1
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
374 / 345 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 21:34 #13
Так и будем по одной ошибке вылавливать?
0
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
374 / 345 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
01.05.2013, 22:28 #15
есть еще косячок с выводом:
1
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
01.05.2013, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2013, 22:28
Привет! Вот еще темы с ответами:

Разработать алгоритм решения задачи обработки одномерного массива. - C++
Помогите пожалуйста с написанием кода: Лабораторная работа № 4 Разработать алгоритм решения задачи обработки...

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

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

Разработать алгоритм и программу решения в C++ - C++
1-задача) уравнения: Ax + B = 0 2-задача) системы уравнений: - A1*x + B1*y = C1 {- -A2*x + B2*y = C2


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

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

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