Показать сообщение отдельно
  #9  
Старый 28.06.2013, 19:31
Аватар для orion_asm
orion_asm orion_asm вне форума
Прохожий
 
Регистрация: 23.06.2012
Адрес: Украина, Днепропетровск
Сообщения: 19
Версия Delphi: XE3
Репутация: 10
По умолчанию

Пардон если слишком толсто, зато работает, тестил, вроде ошибок нет.
Код:
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

#define SIZE 255

/*	
    Подсчет слов. Словом считается минимум одна буква,
	которая окружена с обеих сторон как минимум одним
	пробелом
*/

int Words_Count(char *buff)
{
    int word = 0;
	int k = 0;
	// вычисляем длинну строки
	int len = strlen(buff);
	// последний символ не пробел?
	if (!isspace(buff[len]))
	// нет, вносим пробел
	buff[len] = ' ';
	// ввод начался с пробелов?
	if (isspace(buff[0]))
	{
		// считаем количество пробелов
		while (isspace(buff[k]))
		k++;
	}
	// счет от первого места, где закончились пробелы
	for (int i = k; i < SIZE; i++)
	{
		// встретили пробел?
		if (isspace(buff[i]))
		// надо же, еще один!
		if (isspace(buff[i+1]))
		// ищем не пробелы
		continue;
		// нашли не пробел, значит слово
		else word++;
	}
	return word;
}

int main ()
{
	// Выделяем память и заполняем нулями
	char *buff = (char*)calloc(SIZE, sizeof(char));
	// считываем строку
	gets_s(buff,SIZE);
           printf("So, we have the %d words", Words_Count(buff));
	getchar();
    return 0;
}
Ответить с цитированием