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

Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 5.00
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
26.01.2012, 21:06     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #1
Ребят, всем привет!;
Помогите, пожалуйста, решить задачу со строками на С++;
Даны две строки, содержащие не более 100 символов.
Строки состоят из слов, разделенных пробелами.
Распечатать все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream> 
void main()
{
int i,j;
char str[100];
char str1[100];
gets(str);
gets(str1);
bool a=false;
 
 
 
    for (i=0;str[i]!='\0';++i)
{
        if(str[i]=='f') a=true;
вот не пойму дальше.. если слово начинается на букву f как проверить, что оно заканчивается на эту букву?
помогите, пожалуйста..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2012, 21:06     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке.
Посмотрите здесь:

C++ слова,начинающиеся и заканчивающиеся на одну и ту же букву
C++ Распечатать все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву.
C++ Вывести в выходной файл все слова, начинающиеся на заданную букву, и их количество
Найти и вывести все слова начинающиеся и заканчивающиеся на одну и ту же букву (комментирование кода) C++
Вывести из файла все слова, которые начинаются на заданную букву C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shiwa
10 / 10 / 1
Регистрация: 24.12.2009
Сообщений: 18
27.01.2012, 00:23     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #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
int myfunc(char str[100],char start,char finish)
{int count=0;
char temp[20][20];
int i,j=0,k=0;
for(i=0;str[i]!='\0';i++)
    if(str[i]==' ')
    {
        temp[j][k]='\0';
        j++;
        k=0;
    }
    else
    {
        temp[j][k]=str[i];
        k++;
    }
    temp[j][k]='\0';
    j++;
    for(i=0;i<j;i++)
        if((temp[i][0]==start)&&(temp[i][sizeof(temp[i]-1)-1]==finish))
        {
            count++;
            cout<<temp[i]<<endl;
        }
    
    return count;
}
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
27.01.2012, 01:38  [ТС]     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #3
Цитата Сообщение от shiwa Посмотреть сообщение
Смотри:
C++
1
2
3
int myfunc(char str[100],char start,char finish)
 
}
спасибо за помощь.
но Я не нашел, где вводить предложения..
вот тут не понял ):
если обнаружили пробел, то в новый массив заносится терминатор?
C++
1
2
3
if(str[i]==' ')
        {
                temp[j][k]='\0';
и вот эта строчка не понятна:
C++
1
 if((temp[i][0]==start)&&(temp[i][sizeof(temp[i]-1)-1]==finish))
поясните, пожалуйста..
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
27.01.2012, 01:38     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #4
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
#include <iostream>
#include <string>
#include <sstream>
 
int StrChange(std::string Str, char ch)
{
    int Cnt = 0;
    std::istringstream ist(Str);
    while(ist>>Str)
        if(Str[0] == ch && Str[Str.length()-1] == ch)
        {
            std::cout<<Str<<std::endl;
            Cnt++;
        }
    return Cnt;
}
 
int main()
{
    std::string Str;
    std::getline(std::cin, Str);
    std::cout<<"Cnt = "<<StrChange(Str,'o')<<std::endl;
    system("pause");
    return 0;
}
shiwa
10 / 10 / 1
Регистрация: 24.12.2009
Сообщений: 18
27.01.2012, 03:02     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #5
Цитата Сообщение от intnower Посмотреть сообщение
спасибо за помощь.
но Я не нашел, где вводить предложения..
вот тут не понял ):
если обнаружили пробел, то в новый массив заносится терминатор?
Это просто функция(метод) в которую передается строка и два символа, первый и последний.
Далее строка разбивается на массив слов и делается сравнения первого и последнего символов.
В случае совпадения счетчик инкрементируется, а слово выводится на экран.
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
27.01.2012, 16:06  [ТС]     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #6
Цитата Сообщение от Dekio Посмотреть сообщение
C++
1
#include <iostream>
спасибо, конечно.. но синтаксис вообще не понятен ):
Я, к сожалению, не программист (:

Добавлено через 16 минут
shiwa
что-то не робит ):
вот в таком виде компилировал:
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
#include <iostream>
void main()
{
char start;
char finish;
char str[100];
gets(str);
char temp[20][20];
int i,j=0,k=0,count=0;
    for(i=0;str[i]!='\0';++i)
        if(str[i]==' ')
        {
            temp[j][k]='\0';
            ++j;
            k=0;
        }
        else
        {
            temp[j][k]=str[i];
            ++k;
        }
        temp[j][k]='\0';
        ++j;
        for(i=0;i<j;++i)
            if((temp[i][0]==start)&&(temp[i][sizeof(temp[i]-1)-1]==finish))
                {
                    count++;
                    printf("%c",temp[i]);
                }
                
system("PAUSE");
}
программа запускается; после введения символов и нажатия ввода, ошибка выводится ):
Run-Time Check Failure #3 - The variable 'start' is being used without being initialized.
помогите, пожалуйста..
shiwa
10 / 10 / 1
Регистрация: 24.12.2009
Сообщений: 18
27.01.2012, 19:02     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #7
Считывай в start и finish нужные символы, например
C++
1
2
cout<<"Введите первый и последний символ\n";
cin>>start>>finish;
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
28.01.2012, 20:48  [ТС]     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #8
Ребят, посмотрите, пожалуйста! подскажите, где может быть ошибка?
очень сильно надо..

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>
void main()
{
char start;
char finish;
char str[100];
gets(str);
char temp[20][20];
int i,j=0,k=0,count=0;
 
        for(i=0;str[i]!='\0';++i)
                if(str[i]==' ')
                {
                        temp[j][k]='\0';
                        ++j;
                        k=0;
                }
                else
                {
                        temp[j][k]=str[i];
                        ++k;
                }
                temp[j][k]='\0';
                ++j;
                for(i=0;i<j;++i)
                        if((temp[i][0]==start)&&(temp[i][sizeof(temp[i]-1)-1]==finish))
                                {
                                        count++;
                                        printf("%c",temp[i]);
                            }
                                
system("PAUSE");
}
Dekio
Фрилансер
Эксперт C++
 Аватар для Dekio
5816 / 1214 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
28.01.2012, 21:03     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #9
Цитата Сообщение от intnower Посмотреть сообщение
void main()
Так нельзя.
Что мешает использовать рабочий вариант кода в посте 4?
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
28.01.2012, 21:49  [ТС]     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #10
Цитата Сообщение от Dekio Посмотреть сообщение
Так нельзя.
Что мешает использовать рабочий вариант кода в посте 4?
спасибо, конечно, за код, большое спасибо!
просто синтаксис для меня не понятен ):
мне нужно будет отчитать и рассказать эту программу..
а Я не смогу по Вашему коду объяснить ):
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
28.01.2012, 23:34     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #11
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
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
 
//---------------------------------------------------------------------
typedef std::string              T_str;
typedef std::vector<T_str>       T_vec;
//---------------------------------------------------------------------
 
int split_str_to_vec(const T_str , const T_str, T_vec & );
 
int main()
{
   T_str str("Hi Hello world HelloH Hi, Hi Hi Hello");
   T_vec v;
   char c = 'H';
 
   split_str_to_vec(str, " \t\n,.-", v);
   
   for ( auto &i : v )
      std::cout << ( ((*i.begin() == c)&& (*i.rbegin() == c) ) ? i : "") << std::endl;
 
   return 0;
}
 
int split_str_to_vec(const T_str s, const T_str DELIM, T_vec &v)
{
   size_t l, r;
 
   for ( l = s.find_first_not_of(DELIM), r = s.find_first_of(DELIM, l) ; 
      l != std::string::npos ; l = s.find_first_not_of(DELIM, r), r = s.find_first_of(DELIM, l) )
      v.push_back(s.substr(l, r - l));
   return v.size();
}
http://liveworkspace.org/code/924790...96335ead4ab716
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
28.01.2012, 23:38  [ТС]     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #12
спасибо за помощь! (:
но Я даже таких библиотек,к сожалению, не знаю ):
мне всего лишь нужна программа, с использованием стандартных циклов for и массивов ):
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
29.01.2012, 01:00     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #13
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 <stdio.h>
#include <ctype.h>
 
#define BUFLEN 101
 
void skip_ws(char** pstr)
{
    while(isspace(**pstr) && **pstr)
        ++*pstr;
}
 
void skip_word(char** pstr)
{
    while(!isspace(**pstr) && **pstr)
        ++*pstr;
}
 
int is_match(char** pstr, char match)
{
    int ismatch = 0;
    
    if(**pstr == match)
        ismatch = 1;
    skip_word(pstr);
    if(*(*pstr - 1) == match && ismatch)
        return 1;
    return 0;
}
 
int find_num_of_match(char* str, char match)
{
    int count = 0;
    
    while(*str)
    {
        skip_ws(&str);
        if(is_match(&str, match))
            ++count;
    }
    return count;
}
 
int main(int argc, char** argv)
{
    char str1[BUFLEN] = "ihei aoijfe dweda aoiefa iwjd adijwa dwdw";
    char str2[BUFLEN] = "aeja olerijg afuehf tiouyr afeja aeijjifa";
    char marker = 'a';
    int num = 0;
 
    num = find_num_of_match(str1, marker);
    printf("In line: %s\nmatches:%d (marker: \'%c\')\n", str1, num, marker);
 
    num = find_num_of_match(str2, marker);
    printf("In line: %s\nmatches:%d (marker: \'%c\')\n", str2, num, marker);
    return 0;
}
http://liveworkspace.org/code/1b9738...fe004d2e275f94
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2012, 11:15     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке.
Еще ссылки по теме:

В строке, состоящей из слов, найти и вывести на экран все слова, начинающиеся на букву w C++
Определить в строке количество слов, начинающихся на заданную пользователем букву C++
Вывести строки, где есть слова, начинающиеся на букву а C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
29.01.2012, 11:15     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. #14
Цитата Сообщение от intnower Посмотреть сообщение
но Я даже таких библиотек,к сожалению, не знаю ):
Могу реализовать используемые функции из algorithm. В этом есть необходимость?
Yandex
Объявления
29.01.2012, 11:15     Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке.
Ответ Создать тему
Опции темы

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