Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]Структуры и файлы. Запись и чтение. Реализовать поиск и сортировку. 
:(
    Опции темы
Slaya
Дата 11.5.2013, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.5.2013

Репутация: нет
Всего: нет



Суть задания:
"Функции для обработки линейных структур данных (разработка, тестирование):
а)создать список, упорядоченный по возрастанию ключей; структура данных элемента: фамилия – номер телефона.; по номеру телефона звонившего абонента выдать его фамилию;
б)по заданной фамилии выдать телефоны всех однофамильцев;
в) создать список, упорядоченный по возрастанию ключей, в котором разрешены записи с одинаковыми ключами, выдать данные всех элементов по заданному ключу.
    Организовать интерфейс работы с функциями."
Функция ввода инфы в файл
Код

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;
}

Просьба: укажите и по возможности исправьте ошибки, поделитесь, кто знает где взять, качественной информацией по этому поводу (запись в файл, форматирование вывода из файла в консоль и т.д.). Заранее спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0834 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.