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

Выборка слов в строке - C++

Восстановить пароль Регистрация
 
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
11.10.2010, 23:36     Выборка слов в строке #1
Всем доброго времени суток
Задача состоит в следующем:Необходимо ввести строку,состоящую из слов,надо вывести на экран все слова из строки,которые начинаются той же буквой,что и первое слово.
Т.е мы вводим,например строку такую:
asf fork a m atf

На экране:a atf

я думаю надо так,но что то она некорректно работает.
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<cstring>
using namespace std;
const int N = 80;
int main()
{
    char st[N],st1[N];
    cin.getline(st,N,'\n');
    cout<<"\n"<<st;
    int a = st[0],k = 0;
    for(int i = 1;i < N;i++)
    {
          if(st[i - 1] == ' ' && st[i] == a )
          for(int j = i;j< ' ';j++)
          st1[k++] = st[j];
    }
cout<<"\n Result-> \n"<<st1<<endl;
cout<<"\n";          
system("pause");
}
Моя идея такая:мы ищем первый пробел и сравниваем после него символ с первым символом,если совпадает,то записываем в другую строку,а потом ее выводим.Но в чем ошибка?
Заранее большое спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2010, 23:36     Выборка слов в строке
Посмотрите здесь:

C++ Подсчет слов в строке
C++ Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Cтрока: Определить количество средних слов в строке и какое из слов начинается на большую по коду букву C++
C++ Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
11.10.2010, 23:43     Выборка слов в строке #2
Цитата Сообщение от Rexer Посмотреть сообщение
C++
1
if(st[i - 1] == ' ' && st[i] == a )
первое что заметил, а почему вы проверяете равен ли элемент "а".ю если я введу строку: effd e ed d то какой результат покажет ваш код?

Добавлено через 47 секунд
нужно делать такую проверку
C++
1
if(st[i - 1] == ' ' && st[0] == st[i] )
Добавлено через 1 минуту
вместо:
C++
1
2
3
for(int j = i;j< ' ';j++)
st1[k++] = st[j];
}
поставьте это
C++
1
2
3
4
5
while(st[i]!=' ')
{
st1[k++] = st[i];
i++;
}
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
12.10.2010, 10:28  [ТС]     Выборка слов в строке #3
Большое спасибо,ошибки глупые,разобрался.
Теперь я хочу усложнить задачу,чтобы было вот как.
Мы вводим много строк,но задача остается такой же.Т.е строк неограниченное количество.Как это реализовать?
Большое спасибо!
Acid_C@t
 Аватар для Acid_C@t
1 / 1 / 0
Регистрация: 18.09.2010
Сообщений: 5
12.10.2010, 13:26     Выборка слов в строке #4
просто сделайте отдельную функцию, которая проверяет совпадение слова из строки, которое начинается той же буквой,что и первое слово и выводит их на екран
потом поставь эту функцию в цикл, количество итераций зависит от количества строк
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
12.10.2010, 14:50     Выборка слов в строке #5
Цитата Сообщение от Rexer Посмотреть сообщение
Мы вводим много строк,но задача остается такой же.
выводить все слова, начинающиеся на первую букву первого слова в первой строке, или для каждой строки находить первую букву первого слова и выводить все остальные слова из этой строки, начинающиеся на ту же букву? И что с регистром - если учитывать, то какие символы в строке? (латинские / латинские + русские)...
Помните - вероятность получить правильный ответ прямо пропорциональна ясности поставленной задачи!
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
12.10.2010, 22:12  [ТС]     Выборка слов в строке #6
Выводим все слова,начинающиеся на ту же букву,что и первое слово и так для всех строк,считаем,что вводим все символы в нижнем регистре
Большое спасибо за помощь!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
13.10.2010, 01:03     Выборка слов в строке #7
Rexer, так сойдёт?
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 <sstream>
#include <list>
#include <cassert>
 
int main(){
    std::string buf;
    std::list<std::string> list;
    char ch;
    
    // получаем список строк
    std::cout << "Enter some strings, empty one - finish:" << std::endl;
    while ( std::cout << "> " && std::getline(std::cin, buf) && ! buf.empty() )
        list.push_back(buf);
    
    // убедиться, что список не пустой
    assert( ! list.empty() );
    
    // получить первое слово из первой строки
    std::stringstream stm(*list.begin());
    stm >> buf;
    
    ch = buf[0];
    
    std::cout << "First letter is: " << ch << std::endl;
    std::cout << "Words starts from this letter:" << std::endl;
    for ( std::list<std::string>::const_iterator i = list.begin(); i != list.end(); ++i ){
        std::istringstream ist(*i);
        while ( ist >> buf )
            if ( buf[0] == ch )
                std::cout << buf << std::endl;
    }
    
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2010, 15:12     Выборка слов в строке
Еще ссылки по теме:

C++ Кол-во слов в строке
Количество слов в заданной строке (для каждого из слов) C++
C++ Поиск слов в строке c++

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

Или воспользуйтесь поиском по форуму:
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
18.10.2010, 15:12  [ТС]     Выборка слов в строке #8
Спасибо,но не все понятно,но это мои проблем)),постараюсь разобраться!
Еще раз благодарю!
Yandex
Объявления
18.10.2010, 15:12     Выборка слов в строке
Ответ Создать тему
Опции темы

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