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

"Количество слов" - C++

Восстановить пароль Регистрация
 
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
20.11.2010, 23:31     "Количество слов" #1
http://informatics.mccme.ru/moodle/m...&chapterid=106
Дана строка, содержащая пробелы. Найдите, сколько в ней слов (слово – это последовательность непробельных символов, слова разделены одним пробелом, первый и последний символ строки – не пробел).
Формат входных данных

На вход подается несколько строк.

Формат выходных данных

Необходимо вывести количество слов в первой из введенных строк.
Изучаю язык сам)(не по школе). Вот мой, который сам написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
int main()
{
char str[256]; 
cin>>str;
int l=strlen(str),i,n;
n=1;
str[l]=' ';
for(i=1;i=l;++i)
{
if(str[i]=' ')
{
n=n+1;
}
}
cout<<n<<endl;
}
Здесь есть ошибка, но я чётко не понимаю, какая. Прога компилирует её(Visual Studio C++ 2010, Borland C++), но когда вводишь строку, он просто показывает введённую строку, но ничего не выполняет. Не показывает результат n. В проверке пишет:
009496.cpp: In function 'int main()':
009496.cpp:8: error: 'strlen' was not declared in this scope
009496.cpp:11: warning: suggest parentheses around assignment used as truth value
009496.cpp:13: warning: suggest parentheses around assignment used as truth value
Помогите поправить код и решить задачу)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.11.2010, 23:35     "Количество слов" #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
#include <sstream>
 
using namespace std;
int main()
{
char str[256];
cin.getline(str, 256);
int l=strlen(str),i,n=0;
istringstream ist(str);
char temp[256];
while(ist>>temp)
   n++;
cout<<n<<endl;
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.11.2010, 23:36     "Количество слов" #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
int main(){
 char str[256]; 
 cin>>str;
 int l=strlen(str),i,n;
 
 
 n=1;
 str[l]=' ';
 
 for(i=1;i<l;++i){
  if(str[i]=' ')  {
   n=n+1;
  }
 }
 cout<<n<<endl;
 
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
20.11.2010, 23:37     "Количество слов" #4
kravam, Таки
C++
1
n=1;//Может 0?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.11.2010, 23:45     "Количество слов" #5
Да чёрт его знает, что он задумал. Короче, увяз коготок- всей птичке пропасть.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
int main(){
 char str[256]; 
 cin>>str;
 int l=strlen(str),i,n;
 
 
 n=1;
 str[l]=' ';
 
 for(i=1;i<l;++i){
  if(str[i]==' ')  {
   n=n+1;
  }
 }
 n++;
 cout<<n<<endl;
 }
Добавлено через 2 минуты
Бум думать, что в конце строки пробелы не предполагаются.
Hi4ko
74 / 74 / 4
Регистрация: 21.10.2010
Сообщений: 376
20.11.2010, 23:51  [ТС]     "Количество слов" #6
Так,
Цитата Сообщение от ForEveR Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstring>
#include <sstream>
 
using namespace std;
int main()
{
char str[256];
cin.getline(str, 256);
int l=strlen(str),i,n=0;
istringstream ist(str);
char temp[256];
while(ist>>temp)
   n++;
cout<<n<<endl;
}
Спасибо, код правильный).
Но есть вопросы к нему из-за моих незнаний:
1. За что отвечает класс <sstream>?
2. istringstream ist(str); - что выполняет эта команда с str?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
21.11.2010, 01:26     "Количество слов" #7
Hi4ko, sstream - хедер строковых поток
istringstream ist - строковый поток
(str) - передача строки как параметра для конструктора строкового потока.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 06:43     "Количество слов"
Еще ссылки по теме:

C++ Определить количество слов в предложении, заканчивающихся на букву "я"
Посчитать количество слов которые начинаются на букву "Б" C++
Посчитать количество слов "что" в заданном тексте C++

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

Или воспользуйтесь поиском по форуму:
T-killer
1 / 1 / 0
Регистрация: 02.05.2012
Сообщений: 18
26.12.2012, 06:43     "Количество слов" #8
А как написать то же задание , но с unsigned char и без <sstream> и istringream?
Yandex
Объявления
26.12.2012, 06:43     "Количество слов"
Ответ Создать тему
Опции темы

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