Суть задания: "Функции для обработки линейных структур данных (разработка, тестирование): а)создать список, упорядоченный по возрастанию ключей; структура данных элемента: фамилия – номер телефона.; по номеру телефона звонившего абонента выдать его фамилию; б)по заданной фамилии выдать телефоны всех однофамильцев; в) создать список, упорядоченный по возрастанию ключей, в котором разрешены записи с одинаковыми ключами, выдать данные всех элементов по заданному ключу. Организовать интерфейс работы с функциями." Функция ввода инфы в файл
Код | void Add_note(void) { system("cls"); system("color 8F"); cout << "Введите номер" << endl; cin.clear(); //очистка ошибочного состояния потока cin.sync(); //очистка состояния буфера cin >> d.number; cout << "Введите фамилию" << endl; cin.clear(); cin.sync(); cin.getline(d.secondname, 15, '\n'); //чтение строки полностью ofstream file("spisok.txt", ios::app); //запист в конец структуры if(!file) {cout<<"Файл не может быть открыт!"; exit (1);} file.write((char*) &d, sizeof(d)); //запись в файл структуры file.close(); //закрытие файла cout << "Данные успешно внесены!" << endl << "Хотите добавить еще запись?" << endl << "(1 - да. 2-нет.)" << endl; int choise_YesOrNo; while ((choise_YesOrNo = _getch()) != EOF) { switch (choise_YesOrNo) { case '1': Add_note(); case '2': main(); default: _getch(); } } }
|
Функция поиска по фамилии(вот она и не работает, собственно).
Код | void Search_secondname(void) { system("cls"); system("color 8F"); int vib2=0; int k=0; char secondname [15]; cin.clear(); cin.sync(); cin.getline(secondname,15); ifstream file("spisok.txt",ios::in); //відкриття файлу для читання if(!file) {cout<<"Файл не может быть открыт"; exit (1);} //перевірка file.seekg(0,ios::end); //встановлення вказівника на кінець файлу long long fsize=file.tellg(); //пошук розміру файлу file.seekg(0,ios::beg); //вказівник на початок файлу //Vyvod_zagolovok(); while(fsize-file.tellg() >= sizeof(d)) { file.read((char*) &d,sizeof (d)); //зчитування з файла if(strcmp(d.secondname,secondname)==0) //порівняння { Vyvod(); k++; } } if(k==0) { cout<<"Ничего не найдено\n";} file.close(); //закриття файлу }
void Vyvod(void) { cout<< endl << setiosflags(ios::left) << d.secondname << " " <<d.number << endl; }
|
Просьба: укажите и по возможности исправьте ошибки, поделитесь, кто знает где взять, качественной информацией по этому поводу (запись в файл, форматирование вывода из файла в консоль и т.д.). Заранее спасибо! |