Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Вывод слов из *.txt файла в алфавитном порядке в С


Автор: Cvetok 17.5.2008, 02:49
Есть программа
void main (void)
{
T_Table Toot = {{"", 4},{"m1", 1},{"m2", 2},{"m3", 3},{"m4", 4}};
//AfficherTable (Toot);

int i=MettreAJourTable( );

}


int MettreAJourTable ()
{
FILE*fp;
T_Table T = {{"", 0}};
char*p;
char*Sep="0123456789.;:,!?/+-*#'\"\n\t()[] ";
char Filename[MAXSIZE+1]; 
char Ligne[MAXLENGTH+1];

printf("Fichier: ");
gets(Filename);
fp=fopen(Filename,"rt");
printf("\n");

if (fp==NULL)
{
printf("Impossible d'ouvrir le fichier %s \n", Filename);
exit (1);
}

while(fgets(Ligne,sizeof Ligne,fp)!=NULL)
{
p=strtok(Ligne,Sep);
while(p!=NULL)
{
MaJ(T,p);
p=strtok(NULL,Sep);
}
}
fclose(fp);

AfficherTable(T);
printf("\n");

return EXIT_SUCCESS; 
}



int AfficherTable (T_Table T)
{
int i;
int l=0;
for (i=1; i<=T[0].nb; i++)
{

printf("%s\t%d \n",T[i].mot,T[i].nb);
}
printf("\n");
return EXIT_SUCCESS; 
}




int Position (T_Table T, char * p)
{
int i;
for (i=1; i<=T[0].nb; i++)
{
if (strcmp(T[i].mot,p)==0) return i;
return 0;
}
return 0;
}

void MaJ (T_Table T, char * p)
{
int i;
int laPosition = Position (T, p);
if (laPosition == 0) 
{
T[0].nb++;
T[T[0].nb].mot=strdup(p);
T[T[0].nb].nb=1;
}
else
T[laPosition].nb++;
}

функция MettreAJourTable открывает текстовый файл и анализирует текст в нём, разделяя его на отдельные слова и выводя их в столбик. 
функция AfficherTable всё это дело распечатывает
функция Position считает, сколько раз каждое слово встречается в тексте (статистика). 
Результатом программы является текст из файла со словами, выведенными в столбик (каждое слово пишется 1 раз вне зависимости от кол-ва его появлений в исходном тексте) и статистикой кол-ва этих слов в тексте напротив. Требуется переделать эту программу так, чтобы слова в тексте выводились в алфавитном порядке. 
Помогите, пожалуста, бедной девушке! Заранее огромное спасибо)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)