All pastes #35854 Raw Edit

Miscellany

public cpp v1 · immutable
#35854 ·published 2006-01-05 14:07 UTC
rendered paste body
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream.h>using namespace std;struct node{       char word[20];       struct node *next;       struct node *prev;       int linenum; //line the word is on       int wordnum; //count of occurances       };       typedef struct node *WORDPTR;struct node2{//tree       char word[20];       WORDPTR wordlist;//pointer to word list       int wordnum;//number of occurancce       struct node2 *left;       struct node2 *right;       };       typedef struct node2 *TREEPTR;WORDPTR getnode(void){        WORDPTR tmpword;        tmpword = (WORDPTR)malloc(sizeof(struct node));        tmpword->next = NULL;        return(tmpword);}TREEPTR gettreenode(){        TREEPTR temptree;        temptree = (TREEPTR)malloc(sizeof(struct node2));        return(temptree);        }TREEPTR insert(TREEPTR,char[]);TREEPTR maketree(char[]);TREEPTR insertree(TREEPTR,char[]);void printaword(WORDPTR);int makeaword();void makealine();void storealine();void printTree(TREEPTR);void insafter(WORDPTR,char[]);int i;char word[20];int linenumber=1;int linepos=0;FILE * pfile = fopen ("txtinput","r");//the text filechar line[1000];//store a whole line in thisTREEPTR tree;int main(){    storealine();storealine();printTree(tree);system("pause");free(tree);return(0);}void makealine() //gets a line{char temper;i=0;fscanf (pfile,"%c",&temper);  //scan first characterdo    {      line[i] = temper;//copy temp cahr into line      i++;//move along line      line[i] = '\0';      fscanf (pfile,"%c",&temper);        }while((temper!='\n'));//while it's not the new line character , keep goin}void storealine(){makealine(); //get initial lineint flag = makeaword(); //get a word from ittree = insert(tree,word);//add it to treeflag = 0;//reset flagdo      {          flag = makeaword();//get a word      if (flag == 1)//if it is a word, add it to tree      {                        //printf("%s ",word);            tree=insert(tree,word);//insert it to tree                  }      if(linepos+2 > strlen(line))      {       linepos=0;// if it's at the end of the line, reset the line, increment        linenumber++;}//line number      }while(linepos !=0);      printf("\n");}int makeaword(){    char tmp[20];int k =0,l=0;    int flag = 0;while (line[linepos] != '\0' && line[linepos] != ' ' && line[linepos] != '.' && line[linepos]!=',' && line[linepos]!='EOF'){        word[k]=tolower(line[linepos]);	//while it's not end of the word, a space,a period, a comma, copy the character        word[k+1] = '\0';         k++, linepos++;         flag = 1;};if (line[linepos] == '.' || line[linepos] == ' ' || line[linepos]==',')   linepos++;//advance if it is one of those characters// if it's at the end go to next line to be insertedreturn(flag);}void printTree(TREEPTR treep) {  if (treep == NULL) return;//print tree inorder  printTree(treep->left);  printf("%s",*(treep->wordlist->word);  printTree(treep->right);}                     void insafter(WORDPTR tempword,char x[]){     WORDPTR temp ;     temp = getnode();     if (tempword == NULL){        printf("void insertion");        exit(1);        }          for (i = 0; i<=strlen(x); i++)         temp->word[i] =(x[i]);     temp->linenum = linenumber;     temp->wordnum = linepos-(strlen(x));//copy over relevant information     temp->next = tempword;     tempword= temp;     }void printaword(WORDPTR get){     printf("%s %d %d \n",get->word,get->linenum,get->wordnum);} TREEPTR maketree(char wd[])//make a treenode{TREEPTR tmptree;tmptree = gettreenode();for (i = 0; i<=strlen(wd); i++)    tmptree->word[i] =(wd[i]);//copy over wordtmptree->left = NULL;tmptree->right = NULL;if (tmptree->wordlist == NULL)   {//if the wordlist for the point hasn't been    tmptree->wordlist=getnode();//initialed do so   }else      insafter(tmptree->wordlist,wd);//else, insert it     return(tmptree);}TREEPTR insert(TREEPTR tp, char wd[]) {  if (tp == NULL) {    return(maketree(wd));  }    if ((strcmp(wd,tp->word)==0)){       insafter(tp->wordlist,wd);       return(tp);}else {         if ((strcmp(wd,tp->word)<0)) //recursively go through tree to find the right        tp->left = insert(tp->left,wd);//position    else        tp->right = insert(tp->right,wd);    return(tp);  }}