#include #include #include #include vector read_dictionary(string filename) { vector d; ifstream fin(filename.c_str()); while (true) { string s; fin >> s; if (fin.fail()) break; d.push_back(s); } fin.close(); cout << d.size() << " words read\n"; return d; } void search(vector v, string wanted) { int min = 0, max = v.size()-1, steps = 0; while (true) { int middle = (min+max)/2; steps += 1; cout << steps << ": " << min << " " << middle << " " << max << " " << v[middle] << "\n"; if (wanted < v[middle]) { cout << " before\n"; max = middle - 1; } else if (wanted > v[middle]) { cout << " after\n"; min = middle + 1; } else { cout << "found\n"; return; } } } void main() { vector words = read_dictionary("/home/www/dics/pocket.txt"); cout << words[0] << "\n"; cout << words[words.size()/2] << "\n"; cout << words[words.size()-1] << "\n"; string s; cout << "look for: "; cin >> s; search(words, s); }