Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2010, 11:10   #1
Driver_09
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 61
По умолчанию

Код:
#include <stdio.h>
#include <string.h>
#define NN 100    //кол-во слов массиве
#define SIZE 40   //макс. длина слова
void main()
{
char mas[NN][SIZE];     //массив под слова
char str[NN*SIZE], *ptr;   //буфер для ввода строки и указатель на него
char stemp[SIZE], *ps;     //строка для временного хранения слова
int cnt[NN], i;                  //массив счетчиков

for(i=0; i<NN; i++)          //обнуляем все счетчики
	{
	cnt[i]=0;
	*mas[i]='\0';
	}

puts("VVedite stroku:");
gets(str);
ptr=str;
while(*ptr)
	{
	while(*ptr==' ')              //надо пропустить пробелы перед словом
	 ptr++;
	for(ps=stemp; *ptr>' '; ptr++)    //выделяем слово во временный //массив
	 *ps++=*ptr;
	*ps=0;
if(*stemp==0)
 break;
 for(i=0; i<NN; i++)
   if(strcmp(stemp,mas[i])==0)
     {
     cnt[i]++;
     break;
     }
 if(i==NN)
  {
  for(i=0; i<NN; i++)
   if(*mas[i]==0)
    break;
  if(i<NN)
   {
   strcpy(mas[i], stemp);
   cnt[i]=1;
   }
  }
 	}
for(i=0; i<NN; i++)
 if(cnt[i]>1)
  printf("%s\t%d\n", mas[i], cnt[i]);
}
эта программа выводит слово(или слова), которые встретились больше одного раза.

Помогите переделать её, чтобы она считала количество слов в строке.
Тут есть одна ф-ия, которая возвращает кол-во слов, но только работает немного неправильно:
Код:
int kilkist (char S[])
{
int kil=0;
char m=' ';
int k;
for (k=1;S[k]!='\0';k++)
{
if ((S[k-1]==m)&&(S[k]==m))
kil;
else if (S[k]==m)
kil++;
}
return kil;
}
Программа на Си.

Скажите, почему здесь выскакивают 4 предупреждения?
Код:
#include <stdio.h>
#include <string.h>

void main()
{
char *s;
int i=1;
int CountWord=1;
puts("Vvedite stroku:");
gets(s);               // вот здесь
 for (i=1; i < strlen(s); i++)
 {
  if (s[i-1]==' ' && s[i]!=' ')
    CountWord++;
 }
if (strlen)
printf ("Kol-vo slov = %d\n", CountWord);
}
Но прога в принципе работает

Последний раз редактировалось Stilet; 24.10.2010 в 14:57.
Driver_09 вне форума Ответить с цитированием
Старый 24.10.2010, 14:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

char *s=""; - инициализируй, не будетпредупреждения о неинициализированной переменной
Цитата:
if (strlen)
Это что за финт вперед пятками?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.10.2010, 17:14   #3
Driver_09
Пользователь
 
Регистрация: 11.10.2009
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это что за финт вперед пятками?
А я не вижу такого))

а, увидел. должно быть
Цитата:
if (strlen(s) < 4)
printf ("Kol-vo slov = %d\n", CountWord);
Мне надо чтобы вывело на экран количество слов меньше 4 символов.

Последний раз редактировалось Stilet; 24.10.2010 в 20:33.
Driver_09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества часов Fezdipekla Microsoft Office Excel 3 22.06.2010 13:54
Подсчет: слов и количества символов (C#) freddykruger Помощь студентам 9 28.04.2010 11:29
Подсчет количества слов на листе bukarenko Microsoft Office Excel 4 01.04.2010 12:30
Подсчет количества слов предложении Милашка000 Общие вопросы C/C++ 2 24.04.2009 20:02
Подсчет количества и частоты Ensoph Помощь студентам 6 08.05.2008 10:16