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

Дан символьный массив, разделить его на слова по символу пробела - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
03.11.2012, 19:02     Дан символьный массив, разделить его на слова по символу пробела #1
Даны натуральное число n, символы s1, …, sn. Группы
символов, разделенные пробелами (одним или несколькими) и не
содержащие пробелов внутри себя, будем называть словами.
Не получается разделить слова по пробелам,использую фукнкцию strtok выдает ошибку, преобразование типов.
и как найти какое-нибудь из разделенных слов, начинающееся с буквы g скажем.
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
#include <iostream>
#include <string>
 
using namespace std;
 
 
int main() {
 
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    char ch;
    do 
    {
        system("CLS");
        int n , i;
        char* S ;
        cout <<"Введите n\n";
        cin>>n;
        S = new char [n];
        for (i=0;i<n;i++){
            cin>> S[i];
        }
        for (i=0;i<n;i++)
        cout << S[i];
        
        cout << "Продолжить выполнение программы? Да(y)/Нет(n)" << endl;
        do
        {
            ch = getchar();
        }while( (ch != 'y') && (ch != 'Y') && (ch != 'n' ) && (ch != 'N') );
    }while ( (ch != 'n' ) && (ch != 'N') );
}
Добавлено через 2 часа 3 минуты
эм не ужели не кто не знает такие вещи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2012, 19:02     Дан символьный массив, разделить его на слова по символу пробела
Посмотрите здесь:

Дан символьный массив. Найти символы, которые представляют собой цифры C++
C++ дан двумерный массив размерностью Н, заполненный целыми числами, все его отрицательные элементы записать в одномерный массив, все его положительные за
C++ Разделить массив Char на слова
C++ Дан символьный файл f. Добавить в его конец символы e,n,d (если это необходимо, использовать дополнительный файл g ).
C++ Дан тестовый файл. Вывести его содержимое в другой файл, заменив каждое вхождение пробела на символ нижнего подчеркивания.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
03.11.2012, 19:32     Дан символьный массив, разделить его на слова по символу пробела #2
Вы написали чушь какую то просто, вот никто и не отвечает...
Что вам нужно на примере напишите.
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
03.11.2012, 19:34  [ТС]     Дан символьный массив, разделить его на слова по символу пробела #3
если вы не поняли это не значит что чушь
пример я ввожу Segodnya horoshiu den scazal Andrei.
и вот пробелы это служет разделением на слова, а у меня вывод выглядит вот так SegodnyahoroshiudenscazalAndrei, вот и вопрос как сделать вывод с пробелами, и что бы програма искала слова начинающиеся на А в данном случае должна вывести слово Andrei
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
03.11.2012, 19:58     Дан символьный массив, разделить его на слова по символу пробела #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
#include <iostream>
#include <conio.h>
#include <string.h>
 
using namespace std;
 
int main(){
    char str[50] = {' '};
    cin.get(str, 50);
    int size = strlen(str);
    for(int i = 0; i < size; i++){
            if((str[i] == 'A' && str[i-1] == ' ') || (str[i] == 'A' && i == 0)){
                      int j = i;
                              do{
                                  cout << str[j];
                                  j++;
                                  }while(str[j] != ' ');
                        cout << " ";
            }
    }
getch();
return 0;
}
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
03.11.2012, 20:12  [ТС]     Дан символьный массив, разделить его на слова по символу пробела #5
изиняюсь выводит он кучу символьного мусора среди которого есть то что начинается на А
JlightenDev_C++
 Аватар для JlightenDev_C++
61 / 61 / 7
Регистрация: 12.08.2012
Сообщений: 150
03.11.2012, 20:17     Дан символьный массив, разделить его на слова по символу пробела #6
Введите SegodnyahoroshiudenscazalAndrei. Все должно работать.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.11.2012, 20:18     Дан символьный массив, разделить его на слова по символу пробела #7
C
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
#include<string.h>
 
int main()
{
   char s[1024], *w;
   fgets(s, 1024, stdin);
   for(w = strtok(s, " \n\t"); w; w = strtok(NULL, " \n\t"))
      if (w[0] == 'A')
         puts(w);
   return 0;
}
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
03.11.2012, 20:21  [ТС]     Дан символьный массив, разделить его на слова по символу пробела #8
[IMG]http://i46.***********/thumb/2012/1103/ce/bb9fb6546441b10315d195f133d39dce.jpeg[/IMG]

Добавлено через 2 минуты
Thinker, ваш код работает идеально спс)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 17:04     Дан символьный массив, разделить его на слова по символу пробела
Еще ссылки по теме:

C++ Разделить символьный массив на лексемы
C++ Разделить символьный массив на подмассивы без использования методов String
Дан массив А(13), записать его в массив В таким образом: b[1]=a[1], b[2]=a[1]*a[3], b[7]=a[1]*a[3]*.*a[13] C++

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

Или воспользуйтесь поиском по форуму:
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 174
12.11.2012, 17:04  [ТС]     Дан символьный массив, разделить его на слова по символу пробела #9
Thinker, хотя нет была помарочка вывод срабатывал только если первое слово начиналась на а ,если его не было но были слова в последовательности на начинающиеся на а то вывод не срабатывал
мой код, может кому понадобится тут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include<stdio.h>
#include<string.h>
 
using namespace std;
 
int main()
{
    int i=0; 
    char s[1024] = {' '},*a;
     cin.get(s, 1024);
     a=strtok(s, " ");
         for(a = strtok(NULL, " \n\t"); a; a = strtok(NULL, " \n\t")) 
         {          
             if (a[0] =='a') 
                puts (a) ;
         }
    cin.get();
    cin.get();
    return 0;
}
Yandex
Объявления
12.11.2012, 17:04     Дан символьный массив, разделить его на слова по символу пробела
Ответ Создать тему
Опции темы

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