Ładny brzuch

Witam
Mam problem z zrozumieniem poniszego programu. Czy mgby mi kto go wytumaczy i czy mona go zapisa w innej postaci chodzi mi o to eby dziaanie byo podobne ale skadnia inna? Z gry dzikuje za pomoc.
#include <stdio.h> #include <ctype.h> #include <stdlib.h> #include <string> #define MAXWORD 100 struct tnode { // wze drzewa char *word; // wskanik do tekstu sowa int count; // licznik wystpie struct tnode *left; // lewy potomek struct tnode *right; // prawy potomek }; struct tnode *addtree(struct tnode *, char *); void treeprint(struct tnode *); struct tnode *talloc(); void ZmienTekst(char* tekst); int licznik=0; // licznik sow FILE *odczyt,*zapis; // nazwa pliku int main(){ char word[MAXWORD]=""; // slowo o maksymalnej dlugosci #MAXWORD std::string text; // string do jakiego wpisujemy sprawdzony tekst bool space=false; // suy do sprawdzenia czy jest kilka spacji czy kropek. struct tnode *root; // tworzenie korzenia char letter[1]; // wczytana literka root = NULL; // tworzenie korzenia char sOdczyt[25]="1.txt",sZapis[25]="2.txt"; // ciezki do plikow odczyt = fopen(sOdczyt ,"r"); // otwiera plik printf("Otworzono plik do odczytu: %s \n \n",sOdczyt); while(true) // cay plik czyta po 1 literce i //sprawdza czy literka jest literk a nie liczba czy znakiem { if(fscanf(odczyt,"%c",&letter)==-1)break; //jesli koniec pliku - break(przerwij) if(((letter[0]!='„')&&(letter[0]!='”'))& &((isalpha(letter[0])) ||(letter[0]=='')||(letter[0]=='')||(letter[0]==' ') ||(letter[0]=='')||(letter[0]==''))) { switch(letter[0]) { case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; case '': letter[0] = ''; break; } letter[0]=tolower(letter[0]); // zamiana duych liter wystpujcych text+= letter[0]; // we wczytywanych sowach na mae space=true; } else { if(space) // sprawdzenie czy nie ma kilku spacji,kropek, itp. po sobie { strncpy(word,text.c_str(),MAXWORD-1); root = addtree(root, word); space=false; } text=""; } } // dodanie ostatniego sowa if(space) // sprawdzenie czy nie ma kilku spacji po sobie { strncpy(word,text.c_str(),MAXWORD-1); root = addtree(root, word); } fclose(odczyt); zapis = fopen(sZapis,"w"); // wypisanie/zapisanie danych for(licznik;licznik>0;licznik--) treeprint(root); fclose(zapis); printf("Posegregowane dane znajduja sie w pliku: %s \n \n ",sZapis); system("PAUSE"); return 0; } struct tnode *addtree(struct tnode *p, char *w) // addtree: dodaj wze dla w; { // szukaj w p lub poniej p int cond; if (p==NULL) // w jest nowym sowem { p=talloc(); // utwrz nowy wze p->word= strdup(w); p->count=1; p->left=p->right= NULL; if((p->count)>licznik){ licznik=(p->count); } } else if ((cond = strcmp(w, p->word))==0) { p->count++; // powtrzone sowo if((p->count)>licznik){ licznik=(p->count); } } else if (cond <0) // mniejsze od lewego poddrzewa { p->left =addtree(p->left, w); } else // wiksze od rawego poddrzewa { p->right= addtree(p->right, w); } return p; } void treeprint(struct tnode *p) // treeprint: wypisz uporzdkowane drzewo w p { char buffer[4]=""; if(p!=NULL) { treeprint(p->left); if((p->count)==licznik){ fprintf(zapis, "%i - %s\n", (p->count), (p->word)); } treeprint(p->right); } } struct tnode *talloc() // talloc: utwrz nowy wze { return (struct tnode *) malloc(sizeof(struct tnode)); // malloc: funkcja rezerwujcamiejsce w pami } // dla kolejnych sw

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •