program ma na celu wyznaczanie najczęściej występujących słowa w kilku dramatach Szekspira (program komputerowy w języku C)
kompiluje się uruchamia ale nie działa jak powinien proszę o pomoc , chociaż podpowiedz jakąś co zrobiłem nietak
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#define max 20
char sslowo[max];
struct Wezel
{
char *slowo ;
int ilosc;
struct Wezel *lewo; //deklaruje lewo jako wskaznik do wezla a nie sam wezel
struct Wezel *prawo;
};
typedef struct Wezel wezel;
wezel* drzewo(wezel *korzen, char *sslowo)
{
int a;
if(korzen==NULL)
{
korzen= (struct Wezel *) malloc(sizeof (struct Wezel));
korzen->ilosc= 1;
korzen->lewo = NULL;
korzen->prawo = NULL;
korzen->slowo= (char*) malloc(sizeof(char)*strlen(sslowo+1));
strcpy (korzen->slowo, sslowo);
}
else
{
a = strcmp(sslowo,korzen->slowo);
if(a ==0)
korzen->ilosc++;
else
{
if(a<0)
korzen->lewo=drzewo(korzen->lewo,sslowo);
else
korzen->prawo=drzewo(korzen->prawo,sslowo);
}
}
return korzen;
}
void WypiszDrzewo(struct Wezel *korzen)
{
if (korzen != NULL)
{
WypiszDrzewo(korzen->lewo);
printf("%4d %s\n",korzen->ilosc,korzen->slowo);
WypiszDrzewo(korzen->prawo);
}
}
main()
{
int i=0,j=0;
char s[200];
FILE* t;
wezel *mytree = NULL;
t = fopen( "HAMLET.txt", "r" );
if (t==NULL) return 1; //zakoncz gdy nie mozna otworzyc pliku
while (!feof(t))
{
fgets(s,sizeof(s),t); //wczytaj kolejna linie do s
while(s[j]!='\0')
{
memset(sslowo,0,max* sizeof(char)); //czyszczę tab sslowo
while(isalpha(s[j]))
{
sslowo[i]=s[j];
i++;
j++;
}
sslowo[i]='\0';
printf("%s\n",sslowo);
mytree = drzewo(mytree,sslowo);
j++;
i=0;
}
j=0;
}
WypiszDrzewo(mytree); //wypisuje rekurencyjnie drzewo
fclose(t);
getch();
return 0;
}
poprawiłem kod (kompiluje się ) ale nadal nie działa jak powinien :(