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

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

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

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

01.05.2013, 19:01. Просмотров 1209. Ответов 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
375 / 346 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.05.2013, 01:52 #17
yoghurt92, шило на мыло
1
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
375 / 346 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.05.2013, 13:05 #19
Самый первый тест.
0
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
yoghurt92
375 / 346 / 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;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
02.05.2013, 15:21 #21
косяк с пустой строкой и со строкой без слов.
1
Миниатюры
Разработать алгоритм и программу для решения задачи с использованием строк символов  
Ternsip
663 / 191 / 6
Регистрация: 10.05.2012
Сообщений: 595
02.05.2013, 15:35 #22
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
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
 
using namespace std;
 
int main(){
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
    map <int, string> s;
    string str;
    while (cin >> str) {
        s[str.length()] = str;
    }
    map <int, string>::iterator it = s.end();
    if (it == s.begin())
        return 0;
    do {
        --it;
        if ((it->second)[0] == 'z') {
            str = it->second;
            reverse(str.begin(), str.end());
            cout << str;
            return 0;
        }
    } while (it != s.begin());
    return 0;
}
Добавлено через 2 минуты
m09, пример ввода в input.txt
a a a aaa a zaz za aaaaaa gfasfasfz zaa gzgzgzg zaaaf
0
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
02.05.2013, 21:26 #23
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
#include <iostream>
#include <iterator>
#include <string>
#include <sstream>
#include <Windows.h>
using namespace std;
 
void find_word(string _str){
    string delim(" .,!?");
 
    if(_str.size() != 0){
        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];
            }
        }
    }
}
 
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
03.05.2013, 13:55 #24
yoghurt92, да ничего. Пока ошибок не найдено.
0
m09
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
14.05.2013, 19:10  [ТС] #25
ludi a pokoroche nel'zya ee napisat'??? pochemu to eta programka owibku vydaet
0
Ternsip
663 / 191 / 6
Регистрация: 10.05.2012
Сообщений: 595
14.05.2013, 19:23 #26
m09, я вам написал достаточно коротко, вам осталось только подключить русский setlocate

Добавлено через 30 секунд
Цитата Сообщение от Ternsip Посмотреть сообщение
'z'
и вот тут исправить на 'я'

Добавлено через 32 секунды
m09, если не сообразили зачем
C++
1
2
    freopen("input.txt", "rt", stdin);
    freopen("output.txt", "wt", stdout);
тогда сотрите его

Добавлено через 8 минут
m09,
Вот совсем коротко
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <string>
 
using namespace std;
 
int main(){
    string str, ans;
    while (cin >> str) {
        if (str.length() > ans.length() && str[0] == 'я') 
            ans = str;
    }
    if (ans == "")
        ans = "аволс огокат тен";
    reverse(ans.begin(), ans.end());
    cout << ans;
    return 0;
}
1
m09
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
14.05.2013, 19:24  [ТС] #27
a u vas eta programma zapuskaetsya?
0
Ternsip
663 / 191 / 6
Регистрация: 10.05.2012
Сообщений: 595
14.05.2013, 19:26 #28
m09, разумеется на microsoft visual studio c++ 2012 в empty project делаю, только я ещё файлы подключал input.txt и output.txt
тогда
C++
1
2
freopen("input.txt", "rt", stdin);
freopen("output.txt", "wt", stdout);
нужен
0
m09
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 20
14.05.2013, 19:28  [ТС] #29
Можете мне результаты скинуть??
0
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
14.05.2013, 19:33 #30


Цитата Сообщение от m09 Посмотреть сообщение
Можете мне результаты скинуть??
0
14.05.2013, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2013, 19:33
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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