@Don: Can you please explain the 3rd for loop.....the working of if statement???
On Thu, Aug 25, 2011 at 11:02 PM, Don <[email protected]> wrote: > Sure. It uses a hash table to keep track of which characters occur in > each file. The hash table is 256 bits initialized to zero. When it > encounters a character in file 1 it sets the corresponding bit in the > hash table. It does that by taking the 3 low order bits as the index > to the hash table. Those bits will fall in the range 0..7. The high > order bits, obtained by shifting the character right 3 bits, will give > a value in the range 0..32. We shift a bit into that location and use > bitwise or to set the bit in the hash table. We do that for both > files. The final "for" loop checks each character to determine if its > bit is set in both hash tables. If so, it occurs in both places and we > output that character. > > The code would be somewhat simpler if I didn't try to use every bit in > the hash table. It would take 512 bytes of memory instead of 512 bits. > > int main(int argc, char *argv[]) > { > FILE *f1 = fopen(argv[1],"r"); > FILE *f2 = fopen(argv[2],"r"); > char hash1[256] = {0}; > char hash2[256] = {0}; > char ch; > > while((ch=getc(f1)) != EOF) > hash1[ch] = 1; > > while((ch=getc(f2)) != EOF) > hash2[ch] = 1; > > for(ch = 0; ch < 256; ++ch) > if (hash1[ch] && hash2[ch]) > printf("%c", ch); > > return 0; > } > > Don > > On Aug 25, 11:42 am, Shrey Choudhary <[email protected]> > wrote: > > @Don.. > > > > Can you briefly explain the program? > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.
