i can't figure out the rest of this binary sort, i'm not quite sure what arguments i need to send the function and what else to write for the rest of the function. help please!![]()
Code:#include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream.h> #include <fstream.h> #include <ctype.h> #include <iomanip.h> class wordanddef { public: char* word; char* def; }; int loaddata(char *fn, wordanddef wadptr[]); void sortdata(int numlines, wordanddef wadptr[]); int findword(int numlines, wordanddef pwordanddef, char *wrd) int main(void) { char fname[100], sword[20], origword[20]; int linecnt, fwordnum, ccnt; wordanddef pwordanddef[400]; strcpy(fname, "defs.dat"); linecnt=loaddata(fname, pwordanddef); if(linecnt==-1) { cout<<"File could not be opened"; system("Pause"); exit(1); } sortdata(linecnt, pwordanddef); while(strcmp (sword, "")!=0) { cout<<"\nEnter the word to search for, or hit enter to exit: "; cin.getline(sword, 20); strcpy(origword, sword); fwordnum=findword(linecnt, pwordanddef, sword); if(fwordnum==-1) cout<<"\nNot found.\n"; else { cout<<"\nWord found.\n"; cout<<"Original Word As Typed: "<<origword<<"\n"; cout<<"Word: "<<pwordanddef[fwordnum].word<<"\n"; cout<<"Definition: "<<pwordanddef[fwordnum].def<<"\n"; } } } int loaddata(char *fn, wordanddef wadptr[]) { ifstream file; char line[80]; int cnt=0; char tmpWord[50]; char tmpDef[500]; file.open(fn); if(file.fail()) return -1; while (file.peek() != EOF) { file >> tmpWord; file >> ws; file.getline(tmpDef, 999); wadptr[cnt].word = new char[1+strlen(tmpWord)]; strcpy(wadptr[cnt].word, tmpWord); wadptr[cnt].def = new char[1+strlen(tmpDef)]; strcpy(wadptr[cnt].def, tmpDef); cnt++; } file.close(); return cnt; } void sortdata(int numlines, wordanddef wadptr[]) { int swap, sortcnt; wordanddef twadptr; swap=1; while(swap) { swap=0; sortcnt=0; while(sortcnt<numlines-1) { if(strcmp(wadptr[sortcnt].word, wadptr[sortcnt+1].word)>0) { twadptr=wadptr[sortcnt]; wadptr[sortcnt]=wadptr[sortcnt+1]; wadptr[sortcnt+1]=twadptr; swap=1; } sortcnt++; } } } int findword(int numlines, wordanddef pwordanddef, char *wrd) { int bottom = 0; int top = numlines - 1; int middle; while (bottom < top) { middle = (top + bottom)/2; if (wrd < pwordanddef[middle]) top = middle +1; else bottom = middle; } if (wrd == pwordanddef[bottom])



LinkBack URL
About LinkBacks



