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

Определить первое слово с указанной буквой - C++

Восстановить пароль Регистрация
 
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
03.08.2013, 17:38     Определить первое слово с указанной буквой #1
Помогите написать функцию, пожалуйста!

Условие: допускается использование любых видов функций.

Разработать функцию, которая определяет в заданной символьной строке первое слово, содержащее указанную букву и возвращает указатель на конец этого слова. Используя разработанную функцию, выделить и напечатать все слова из введенного предложения, в которых встречается заданная буква, или вывести сообщение об отсутствии таких слов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2013, 17:38     Определить первое слово с указанной буквой
Посмотрите здесь:

C++ Определить, сколько раз в тексте повторяется первое слово
C++ Определить первое вхождение символа "d" в строке и вывести слово, в котором оказался этот символ.
Определить, какое слово чаще встречается в строке - первое или последнее (перевести с паскаля на си) C++
C++ Определить самое короткое слово предложения, первое, если таких несколько.
Определить объединение из двух полей. Первое поле - массив из четырех байт, второе - двойное слово C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21435 / 10220 / 1666
Регистрация: 12.02.2012
Сообщений: 17,095
03.08.2013, 20:48     Определить первое слово с указанной буквой #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
#include "string.h"
#include "iostream.h"
 
// конец первого слова, содержащего заданную
// букву (или NULL, если буквы нет)
 
char * first (char* sent, char lett)
{
   int i,j=-1;
   for (i=0; i<strlen(sent); i++)
       if (*(sent+i) == lett)
       {
           j=i;
           break;
       }
 
    if (j < 0) return NULL;
    if (j < strlen(sent)-1)
    {
        for (i=j+1; j<strlen(sent); i++)
            if (*(sent+i) == ' ') break;
        return sent+i-1;
    }
    else
        return sent+j-1;
 
}
 
// Распечатка слов, содержащих данную букву
 
void printWords (char* sent, char lett)
{
    int i,j=0,k=0;
    for (i=0; i<strlen(sent); i++)
    {
        if (*(sent+i)==' ') j=i+1;
        if (*(sent+i)==lett)
        {
            while(1)
            {
                if ((j == strlen(sent)) || (*(sent+j) == ' ')) break;
                cout << *(sent+j);
                j++;
            }
            cout << endl;
            k++;
        }
    }
    if (k == 0) cout << "Not found any words..." << endl;
}
 
int main(int argc, char* argv[])
{
    char* Str="To be or not to be";
    //cout << first(Str,'i') << " " << *(first(Str,'i')) << endl;
    //cout << first(Str,'e') << " " << *(first(Str,'e')) << endl;
    printWords(Str,'e');
    return 0;
}
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
03.08.2013, 20:59  [ТС]     Определить первое слово с указанной буквой #3
Большое спасибо!

using namespace std; забыли
Catstail
Модератор
 Аватар для Catstail
21435 / 10220 / 1666
Регистрация: 12.02.2012
Сообщений: 17,095
03.08.2013, 21:27     Определить первое слово с указанной буквой #4
Цитата Сообщение от Kaskera Посмотреть сообщение
using namespace std; забыли
- в VC++ 6.0 он не нужен...
Kaskera
0 / 0 / 0
Регистрация: 27.07.2013
Сообщений: 34
03.08.2013, 21:30  [ТС]     Определить первое слово с указанной буквой #5
Не знал, пользуюсь Microsoft VS 2008
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.08.2013, 22:46     Определить первое слово с указанной буквой #6
Цитата Сообщение от Catstail Посмотреть сообщение
в VC++ 6.0 он не нужен...
При таком хедере: #include "iostream.h" (если скомпилируется) он не нужен.
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.08.2013, 02:49     Определить первое слово с указанной буквой #7
А от моё элегантное решение
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
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <regex>
using std::regex;
using std::regex_search;
using std::smatch;
#include <cctype>
using std::isalpha;
 
char* first(char* str1, char c)
{
    string str(str1);
    unsigned int pos;
    pos=str.find(c);
    if(pos!=string::npos)
        while(isalpha(str[pos]))
            pos++;
    return (str1+pos-1);
}
 
void printWords (string sent, char lett)
{
    string s;
    s="([^ ]*)";
    s+=lett;
    s+="([^ ]*)";
    smatch sm;
    regex rv(s);
    while(regex_search(sent,sm,rv))
    {
        cout <<sm[0]<<endl;
        sent=sm.suffix();
    }
}
 
int main()
{
    char* Str="To be or not to be";
 
    cout <<*first(Str,'n')<<endl;
 
    cout <<"vuvod clov"<<endl;
    printWords(Str,'o');
    cout <<endl;
 
    return 0;
}
Catstail
Модератор
 Аватар для Catstail
21435 / 10220 / 1666
Регистрация: 12.02.2012
Сообщений: 17,095
04.08.2013, 09:23     Определить первое слово с указанной буквой #8
Цитата Сообщение от ninja2 Посмотреть сообщение
А от моё элегантное решение
- элегантное решение скромного автора... Такие задачи обычно задают с целью проверки знания базовых алгоритмов. К тому же решение без привлечения регэкспов имеет ту же длину. И в чем элегантность?
Croessmah
04.08.2013, 09:29
  #9

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
И в чем элегантность?
Напихать в Ладу как можно больше всего...
Правда как была никудышкой-погремушкой, так и осталась

Catstail
Модератор
 Аватар для Catstail
21435 / 10220 / 1666
Регистрация: 12.02.2012
Сообщений: 17,095
04.08.2013, 09:32     Определить первое слово с указанной буквой #10
Цитата Сообщение от alsav22 Посмотреть сообщение
если скомпилируется
- я некомпилирующихся решений не выкладываю...
Croessmah
04.08.2013, 09:33
  #11

Не по теме:

Цитата Сообщение от Catstail Посмотреть сообщение
я некомпилирующихся решений не выкладываю...
Думаю, имелось ввиду, что "iostream.h: No such file or directory"

ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
04.08.2013, 12:14     Определить первое слово с указанной буквой #12
Цитата Сообщение от Catstail Посмотреть сообщение
Такие задачи обычно задают с целью проверки знания базовых алгоритмов. К тому же решение без привлечения регэкспов имеет ту же длину. И в чем элегантность?
Это я так просто как бы шутя сказал элегантное решение, я щас как раз главу про строки учу от думаю попробовать написать попытаться так сказать высокоуровневый код решил, хочу еще знания РВ востановить, я их когда то отлично знал, в пхп использовал сильно, от как раз интересное задание, ну и решил код выложить, да еще в С++ <regex> вроде как функциональнее чем функции семейства preg в php.
РВ - это сила с ними можно забыть про функции find, replace класса string.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.08.2013, 19:42     Определить первое слово с указанной буквой
Еще ссылки по теме:

Даны два слова.Верно ли, что первое слово начинается на ту же букву, на которую заканчивается второе слово C++
C++ Определить, содержит ли последнее слово строки букву, с которой начинается первое слово
C++ Определить сколько раз встречается в тексте первое его слово

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
04.08.2013, 19:42     Определить первое слово с указанной буквой #13
Цитата Сообщение от Catstail Посмотреть сообщение
- я некомпилирующихся решений не выкладываю...
Я не вам, я Kaskera. У него, наверное, не компилировалось (хотя, как там в 2008 студии с iostream.h, не заню)...
Цитата Сообщение от Croessmah Посмотреть сообщение
Думаю, имелось ввиду, что "iostream.h: No such file or directory"
Именно это.
Yandex
Объявления
04.08.2013, 19:42     Определить первое слово с указанной буквой
Ответ Создать тему
Опции темы

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