Задача Посчитать количество слов в строке. Слова могут разделяться одним или несколькими пробелами.
Для ввода строки нельзя использовать функцию cin в данном случае, поскольку эта функция осуществляет ввод строки до пробела или перевода строки. Поэтому воспользуемся методом get функции cin:
cin.get(УказательНаСтроку, МаксимальноеЧислоСимволов);
Условием окончания строки является символ с кодом равным 0 (нуль-символ, ‘\0’). После ввода строки организуем цикл по элементам строки до ее окончания. Перед циклом проверяем, что строка не начинается с пробела.
Условием определения следующего слова в строке является наличие какого-то символа после пробела (кроме завершающего нуль-символа). Именно это условие увеличивает счетчик count на 1.
Реализация на C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
int main()
{
char s[80];
int count = 0;
system("chcp 1251");
system("cls");
cout << "Введите строку: " << endl;
cin.get(s, 80);
if ((s[0] != ' ') && (s[0] != '\0'))
count = 1;
int i = 0;
while (s[i] != '\0')
{
if ((s[i] == ' ') && ((s[i + 1] != ' ') && (s[i+1]!='\0')))
count++;
i++;
}
cout << "Количество слов в строке " << count;
cin.get(); cin.get();
return 0;
}
using namespace std;
int main()
{
char s[80];
int count = 0;
system("chcp 1251");
system("cls");
cout << "Введите строку: " << endl;
cin.get(s, 80);
if ((s[0] != ' ') && (s[0] != '\0'))
count = 1;
int i = 0;
while (s[i] != '\0')
{
if ((s[i] == ' ') && ((s[i + 1] != ' ') && (s[i+1]!='\0')))
count++;
i++;
}
cout << "Количество слов в строке " << count;
cin.get(); cin.get();
return 0;
}
Результат выполнения