Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать кол-во слов в текстовом файле, Си 
:(
    Опции темы
Mayk
Дата 10.2.2006, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(chaos @ 10.2.2006, 19:26 Найти цитируемый пост)

Идея вообще такая: как только мы встретили символ код каторого меньш 33(те всякие там пробелы, переводы строк и тп дрянь) и перед этим кодом был символ(те код больше 32, определяем был ли символ или пробел через флаг fSpace) то можно сказать что кончилось слово

только тут надо учитывать, что если char трактуется как signed char (а так скорее всего и есть), то русские буквы и псевдографика(которые как известно имеют номера 0x80-0xFF) тоже будут меньше нуля.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
usawal
Дата 12.2.2006, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.12.2005

Репутация: нет
Всего: -4



В позапрошлом семестре сделал людям кучу курсовиков, связанных со строками.
Вот близкий тебе пример:

Задание на курсовую работу :

Написать программу, открывающую файл, подсчитывающую количество слов в нём и выводящую в некоторый другой файл строки, содержащие слово и количество вхождений слова в исходный файл. Строки должны быть упорядочены по длине слова.

Код

/* ***********************************
  |     filename - "cours12.c"        |
  |                                   |
  |  This program open text file and  |
  | find diferent words and count     |
  | their quantity in text. Result    |
  | save in file by words and         |
  | quantity.                         |
  |                                   |
   \*********************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define IsLetter(x)    (((x>64)&&(x<91))||((x>96)&&(x<123)))
#define IsNotLetter(x) ((x<65)||((x>90)&&(x<97))||(x>122))

char *infName,*outfName,*strFText,*strTime,*strWords,chrAct;
FILE *inFile,*outFile;
int FLen,n,m,QW,*intPos,intTime;

void main(void)
{
 printf ("\nEnter full pathname of input file \n \t-"); /* Input file open  */
 scanf ("%s",infName);                                  /* for read in text */
 inFile = fopen(infName,"rt");                          /* format.          */
 if (inFile==NULL)
     {
      printf ("Error in name of input file! \n");
      getch ();
      return;                                       /* Check on wrong   */
     }

 printf ("Enter full pathname of output file \n \t-");
 scanf ("%s",outfName);                                 /* Output file    */
 outFile = fopen (outfName,"wt");                       /* creat in text  */
 if (outFile==NULL)                                     /* format.        */
    {
     printf ("Error in name of output file! \n");
     getch ();
     return;                                        /* Check on wrong */
    }

 FLen=0;
 strFText=calloc(1024,sizeof(char));
 while((chrAct=fgetc(inFile))!=EOF)
  {
   *(strFText+FLen)=chrAct;
   *(strFText+FLen+1)=0;
   FLen++;
  }

 strWords=calloc(FLen,sizeof(char));
 for(n=0;n<FLen;n++)
  {
   if ((IsLetter(*(strFText+n))&&(n==0))||(IsLetter(*(strFText+n))&&(IsNotLetter(*(strFText+n-1)))))
    {
     strTime=calloc(128,sizeof(char));
     do
      {
       *(strTime+strlen(strTime)+1)=0;
       *(strTime+strlen(strTime))=*(strFText+n);
       n++;
      }
     while(IsLetter(*(strFText+n)));
     strcat(strTime," ");
     if(strstr(strWords,strTime)==NULL)
      {
       strcat(strWords,strTime);
       QW++;
      }
     free(strTime);
    }
  }

 intPos=calloc(QW,sizeof(int));
 m=1;
 while(m<QW)
  {
   *(intPos+m)=(strstr(strWords+*(intPos+m-1)," ")-strWords)+1;
   m++;
  }

 for(m=0;m<QW;m++)
  {
   for(n=m;n<QW;n++)
    {
     if ((strstr(strWords+*(intPos+n)," ")-strWords-*(intPos+n))>(strstr(strWords+*(intPos+m)," ")-strWords-*(intPos+m)))
      {
       intTime=*(intPos+n);
       *(intPos+n)=*(intPos+m);
       *(intPos+m)=intTime;
      }
    }
  }

 for(m=0;m<QW;m++)
  {
   strTime=calloc(128,sizeof(char));
   strncpy(strTime,strWords+*(intPos+m),strstr(strWords+*(intPos+m)," ")-strWords-*(intPos+m));
   intTime=n=0;
   while (strstr(strFText+n,strTime)!=NULL)
    {
     if (IsNotLetter(*(strstr(strFText+n,strTime)-1))&&IsNotLetter(*(strstr(strFText+n,strTime)+strlen(strTime))))
      {
       intTime++;
      }
     n=strstr(strFText+n,strTime)-strFText+strlen(strTime);
    }
   fputs(strTime,outFile);
   itoa(intTime,strTime,10);
   fputs(" ",outFile);
   fputs(strTime,outFile);
   fputs("\n",outFile);
   free(strTime);
  }

 free(intPos);
 free(strWords);
 free(strFText);
 fclose(inFile);
 fclose(outFile);
 return;
}



Это сообщение отредактировал(а) usawal - 12.2.2006, 00:41
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0416 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.