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

строка - C++

Восстановить пароль Регистрация
 
DimmKo
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 13
26.01.2010, 20:10     строка #1
помогите плиз!
читаю книгу, не могу понять
задача типа такой: найти сколько слов в строке
буду очень блогодарен
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
26.01.2010, 20:15     строка #2
DimmKo, Если слова разделены только пробелами то можно посчитать число пробелов и прибавить 1.
C
1
2
3
4
5
int i=0, col_sl=0;
while(str[i]!='\0')
if(str[i]==' ')
col_sl++;
col_sl++;
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
26.01.2010, 20:23     строка #3
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
#include <string.h>
#include <windows.h>
    
/* найти сколько слов в строке */
 
#define SPCHARS " ,.\t\n"
 
int main(void){
    char buf[BUFSIZ], *p;
    int cnt;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    printf("\nСтрока: ");
    if ( !fgets(buf, BUFSIZ, stdin) )
        exit(1);
    
    for ( cnt = 0, p = strtok(buf, SPCHARS); p != NULL; ++cnt, p = strtok(NULL, SPCHARS) )
        ;
    printf("Слов в строке: %d\n", cnt);
    
    exit(0);
}
Добавлено через 5 минут
Цитата Сообщение от valeriikozlov Посмотреть сообщение
Если слова разделены только пробелами
это если между словами гарантированно только один пробел... Тогда лучше завести флаг, типа inword...

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
char buf[LENGTH_OF_BUF], *p;
int inword, cnt; 
for ( inword = cnt = 0, p = buf; *p; ++p ){
  if ( *p == ' ' ){
    if ( inword ){
      ++cnt; 
      inword = 0;
    }
  }
  else
    inword = 1;
}
if ( inword )
  ++cnt;
...
вот так как-то...
DimmKo
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 13
26.01.2010, 20:35  [ТС]     строка #4
ну не всё понятно, но всёже огромное спасибо)
Yandex
Объявления
26.01.2010, 20:35     строка
Ответ Создать тему

Метки
Строки
Опции темы

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