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

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

Войти
Регистрация
Восстановить пароль
 
DimmKo
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 13
#1

строка - C++

26.01.2010, 20:10. Просмотров 389. Ответов 3

помогите плиз!
читаю книгу, не могу понять
задача типа такой: найти сколько слов в строке
буду очень блогодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.01.2010, 20:10     строка
Посмотрите здесь:

C++ строка в c++
C++ строка
строка C++
Строка C++
Строка ... C++
строка C++
Строка C++
строка C++
Строка string и строка char C++
Строка C++
Преобразование строка-число-строка C++
Почему строка, считанная из файла и такая же строка в программе не равны, хотя они, вроде бы, одинаковы? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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     строка
Ответ Создать тему
Опции темы

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