Как посчитать количество слов в строке c
Перейти к содержимому

Как посчитать количество слов в строке c

  • автор:

Подсчет символов, строк и слов

Программа считает количество введенных пользователем символов, строк и слов. Чтобы программа корректно закончила работу и правильно посчитала, после набора строк надо перейти на новую строку, после чего нажать Ctrl + D (по крайней мере в терминале Linux).

#include int main() < char ch, flag=-1; unsigned c=0; // символы unsigned w=0; // слова unsigned n=0; // строки while ((ch = getchar()) != EOF) < if (ch == '\n') n++; else c++; if (ch == ' ' || ch == '\n') flag = -1; else if (flag == -1) < flag = 1; w++; >> printf("Символы: %u\n", c); printf(" Слова: %u\n", w); printf(" Строки: %u\n", n); >
one two three four Символы: 16 Слова: 4 Строки: 3

X Скрыть Наверх

Решение задач на языке C

Посчитать количество слов в строке, которые начинаются на “t”?

Стоит задача, написать программу, пользователь вводит строку, на выводе программа показывает.сколько слов в строке начинается с буквы «t», счетчик работает, но он считает все буквы t в строке, а надо только те с которых начинается слово. Подскажите, пожалуйста, где допустил ошибку.

#include #include using namespace std; int main() < int c=0; char a[100] = ; cout > > cout
  • Вопрос задан более трёх лет назад
  • 4441 просмотр

2 комментария

Простой 2 комментария

Подсчитать количество слов в строке (Си)

Слово – последовательность символов, разделенных пробелами. Под пробелами тут будем понимать символ пробела (не табуляции или чего-то еще). Посчитать число пробелов (и групп пробелов) – неправильно. Ведь строка без пробелов может быть пустой, а может содержать одно слово. Строка с одним словом может содержать ноль пробелов, а также 1 или 2 группы пробелов (перед и после слова). Правильно – считать пары <группу пробелов> Решение будет таким: 1. Считаем с текущей (изначально нулевой) позиции в строке длину группы пробелов, прибавляем ее к текущей позиции. За счет этого группа “пропущена”.
2. Считаем с текущей позиции длину группы непробельных символов ( word_length ).
3. Если word_length болшье нуля – увеличиваем счетчик слов. Прибавляем длину слова к текущей позиции – за счет этого слово “пропущено”.
4. Процесс повторяется пока счетчик не станет больше длины строки. Ясно что подсчет пробелов и непробелов – это две разные функции, которые отличаются лишь оператором сравнения текущего символа. Красивое решение заключается в передаче этой функции в качестве параметра указателя на функцию сравнения. Функции сравнения при этом можно описать так:

int is_space(char c) < return c == ' '; >int is_not_space(char c)

Имея их совсем несложно добавить к пробельным символам что-то еще – табуляции, короткие пробелы, переводы строки т.п. Функция подсчета тогда может быть описана так:

int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; >

Первым аргументом она принимает указатель, однако в качестве него может быть передана подстрока так: &str[i] – передаем часть строки, начиная с i -того символа. Исходный код программы целиком:

#include #include #include #include int is_space(char c) < return c == ' '; >int is_not_space(char c) < return 0 == is_space(c); >int count_start_if(char* str, int (*pred)(char)) < int count = 0; while (*str != 0) < if (pred(*str)) < count++; str++; >else break; > return count; > int count_words(char* str) < int length = strlen(str); int count = 0; int i = 0; while (1) < int spaces_count = count_start_if(&str[i], is_space); i += spaces_count; if (i >= length) < break; >int word_length = count_start_if(&str[i], is_not_space); if (word_length > 0) < count++; >i += word_length; if (i >= length) < break; >> return count; > int main()

Пример выполнения программы:

Подсчет слов в строке

Author24 — интернет-сервис помощи студентам

Помогите плз. Срочно нужно.
Задача.
Подсчитать слова в строке.
Надо на языке C.
И обязательно через функцию.
Спасибо заранее.

Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Подсчет слов в строке
УСЛОВИЕ: Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не.

Подсчёт слов в строке
Составьте функцию wcount, вычисляющую количество слов в строке. Слово – это подстрока, не.

Подсчет количества слов в строке
в последней задаче необходимо подсчитать количество слов в строке, оканчивающейся точкой. Как быть.

Подсчет слов во введенной строке
Как в этой сделать чтоб считала сколько слов ввели? #include <iostream> #include <string>.

Регистрация: 21.05.2015
Сообщений: 44

Лучший ответ

Сообщение было отмечено Памирыч как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
void main(void) { char s[255]; cout"Введите строку: "; gets(s); unsigned int a,i; a=0; for (i=0;istrlen(s)-1;i++) if ((s[i]==' ') && (s[i+1]!=' ')) a=a+1; if (s[0]!=' ') a=a+1; cout"В строке: "a" слов"; getch(); }

Одна секунда гугленья. А теперь просто запихни вычисление слов в функцию отдельную. В функцию передавай массив символьный, а возвращай кол-во слов в строке. Ну или в функции же и выводи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *