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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
#1

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

03.11.2012, 19:02. Просмотров 1770. Ответов 8
Метки нет (Все метки)

Даны натуральное число 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 минуты
эм не ужели не кто не знает такие вещи?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2012, 19:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Дан символьный массив, разделить его на слова по символу пробела (C++):

Разделить символьный массив на лексемы - C++
Нужно разделить символьный массив на лексемы. Новая лексема - от и до мат. знака (&quot;+&quot;, &quot;-&quot;, &quot;*&quot;,...

Разделить символьный массив на подмассивы без использования методов String - C++
Записать слова из текста (массив char) в отдельные массивы, слова разделяет пробел, не использовать методы из String. Пока имею что то...

Разделить символьный массив (строку в стиле Си) на три отдельных массива согласно условию - C++
Добрый день! Есть Char. Из него нужно присвоить трем другим Char по следующему признаку: Char 1 (с 1 символа до 30) Char 2 (с 31...

Дан символьный массив. Найти символы, которые представляют собой цифры - C++
Дан символьный массив. В нем надо найти такие символы, которые представляют собой цифры. То есть есть символьный массив char str1 и char...

Дан символьный файл f. Добавить в его конец символы e,n,d (если это необходимо, использовать дополнительный файл g ). - C++
всем привет помогите плиз я в си не силен)) пришлите код программы вот задача: Дан символьный файл f. Добавить в его конец символы e,n,d...

Разделить строку на части по указанному символу - C++
Есть строка string, как ее поделить по конкретному символу на части, и эти части присвоить другим string

8
JlightenDev_C++
62 / 62 / 7
Регистрация: 12.08.2012
Сообщений: 150
03.11.2012, 19:32 #2
Вы написали чушь какую то просто, вот никто и не отвечает...
Что вам нужно на примере напишите.
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
03.11.2012, 19:34  [ТС] #3
если вы не поняли это не значит что чушь
пример я ввожу Segodnya horoshiu den scazal Andrei.
и вот пробелы это служет разделением на слова, а у меня вывод выглядит вот так SegodnyahoroshiudenscazalAndrei, вот и вопрос как сделать вывод с пробелами, и что бы програма искала слова начинающиеся на А в данном случае должна вывести слово Andrei
0
JlightenDev_C++
62 / 62 / 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;
}
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
03.11.2012, 20:12  [ТС] #5
изиняюсь выводит он кучу символьного мусора среди которого есть то что начинается на А
0
JlightenDev_C++
62 / 62 / 7
Регистрация: 12.08.2012
Сообщений: 150
03.11.2012, 20:17 #6
Введите SegodnyahoroshiudenscazalAndrei. Все должно работать.
1
Thinker
Эксперт С++
4229 / 2203 / 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;
}
1
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
03.11.2012, 20:21  [ТС] #8


Добавлено через 2 минуты
Thinker, ваш код работает идеально спс)
0
Vlad_
7 / 7 / 0
Регистрация: 07.09.2012
Сообщений: 178
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;
}
0
12.11.2012, 17:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 17:04
Привет! Вот еще темы с ответами:

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

Разделить массив Char на слова - C++
Привет.. Вот есть массив символов: char buf; Немного далее в коде он печатается: printf(buf); Получается в таком виде: ...

Ввести символьный массив; найти адрес всех парных его элементов символьного массива - C++
Ввести символьный массив. Найти адрес всех парных его элементов

Разделить строку AnsiString на слова и записать их в массив! - C++
Доброго времени суток, что не так? char lecs; for (i=0;i&lt;1;i++) { String str = A.NameBook; char *pch; ...


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

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

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