1*37da2899SCharles.Forsythimplement StringIntTab; 2*37da2899SCharles.Forsyth 3*37da2899SCharles.Forsythinclude "strinttab.m"; 4*37da2899SCharles.Forsyth 5*37da2899SCharles.Forsythlookup(t: array of StringInt, key: string) : (int, int) 6*37da2899SCharles.Forsyth{ 7*37da2899SCharles.Forsyth min := 0; 8*37da2899SCharles.Forsyth max := len t-1; 9*37da2899SCharles.Forsyth while(min <= max){ 10*37da2899SCharles.Forsyth try := (min+max)/2; 11*37da2899SCharles.Forsyth if(t[try].key < key) 12*37da2899SCharles.Forsyth min = try+1; 13*37da2899SCharles.Forsyth else if(t[try].key > key) 14*37da2899SCharles.Forsyth max = try-1; 15*37da2899SCharles.Forsyth else 16*37da2899SCharles.Forsyth return (1, t[try].val); 17*37da2899SCharles.Forsyth } 18*37da2899SCharles.Forsyth return (0, 0); 19*37da2899SCharles.Forsyth} 20*37da2899SCharles.Forsyth 21*37da2899SCharles.Forsythrevlookup(t: array of StringInt, val: int) : string 22*37da2899SCharles.Forsyth{ 23*37da2899SCharles.Forsyth n := len t; 24*37da2899SCharles.Forsyth for(i:=0; i < n; i++) 25*37da2899SCharles.Forsyth if(t[i].val == val) 26*37da2899SCharles.Forsyth return t[i].key; 27*37da2899SCharles.Forsyth return nil; 28*37da2899SCharles.Forsyth} 29