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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна функция сортировки (любым методом), Нужна функция сортировки из файла 
:(
    Опции темы
devil4eg
  Дата 5.4.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Имеется следующая программа (нехватает сортировки)

Код

#include <iomanip.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#define MARKA 10
#define S_N 10
#define HARAKTER 30
void begtable()
{
    //      1234567890 1234567890 123456789012345678901234567890 123 123
    cout<<"_______________________________________________________________\n";
    cout<<"|  Марка   | Сер.Ном  |       Характеристики         |Оце|В.Р |\n";
    cout<<"---------------------------------------------------------------\n";
}
void endtable()
{
    cout<<"________________________________________________________________\n";
}
struct noutbook
{
    char marka[MARKA];
    char s_n[S_N];
    char harakter[HARAKTER];
    int ocenka_prz;
    int chas_atm;
};

istream& operator>>(istream& in, noutbook& z)
{
    cout<<"Марка= ";
    in.seekg(0L, ios::end);
    in.get(z.marka,MARKA-1,'\n');
    cout<<"Серийный номер= ";
    in.seekg(0L, ios::end);
    in.get(z.s_n,S_N-1,'\n');
    cout<<"Характеристики= ";
    in.seekg(0L, ios::end);
    in.get(z.harakter,HARAKTER-1,'\n');
    cout<<"Оценка производительности= ";
    in.seekg(0L, ios::end);
    in>>z.ocenka_prz;
    cout<<"Время работы= ";
    in.seekg(0L, ios::end);
    in>>z.chas_atm;
    return in;
}
ofstream& operator << (ofstream& f, noutbook z)
{
    f<<z.marka<<endl<<z.s_n<<endl<<z.harakter<<endl<<z.ocenka_prz<<endl<<z.chas_atm<<endl;
    return f;
}
ifstream& operator>> (ifstream& f, noutbook& z)
{
    f.getline(z.marka,MARKA,'\n');
    f.getline(z.s_n,S_N,'\n');
    f.getline(z.harakter,HARAKTER,'\n');
    f>>z.ocenka_prz;
    f.seekg(2l,ios::cur);
    f>>z.chas_atm;
    f.seekg(2l,ios::cur);
    return f;
}
ostream& operator<<(ostream& out, noutbook& z)
{
    out.setf (ios::left);
    out<<"|"<<setw(10)<<z.marka<<"|"<<setw(10)<<z.s_n<<"|"<<setw(30)<<z.harakter<<"|";
    out.setf(ios::right);
    out<<setw(3)<<z.ocenka_prz<<"|"<<setw(4)<<z.chas_atm<<"|\n";
    return out;
}
void sozdanie(char reg)
{
    ofstream fl;
    noutbook s;
    char c;
    if (reg=='1')
      fl.open("noutbook.txt", ios::out);
    else
      fl.open ("noutbook.txt", ios::app);
    if (!fl)
    {
        cerr<<"Ошибка при создании базы\n";
        exit(1);
        }
    do
    {
        cin>>s;
        fl<<s;
        cout<<"Продолжить ввод  (y/n)?";
        cin.seekg(0l,ios::end);
        cin>>c;
    }
    while (c=='y'||c=='Y'||c=='D');
    fl.close();
}
void output()
{
    ifstream fl;
    noutbook s;
    fl.open("noutbook.txt", ios::in);
    if (!fl)
    {
        cerr<<"Ошибка открытия файла для чтения\n";
        exit(1);
    }
    cout<<"Марки\n";
    begtable();
    while (fl)
    {
        fl>>s;
        if (strlen (s.marka)<=0)
            break;
        cout<<s;
    }
    endtable();
    fl.close();
    }
void poisk()
{
    ifstream fl;
    noutbook s;
    char marka[MARKA];
    char s_n[S_N];
    char harakter[HARAKTER];
    char c;
    int ocenka_prz;
    int chas_atm;
    fl.open("noutbook.txt", ios::in);
    if (!fl)
    {
        cerr<<"Ошибка чтения...";
        exit(1);
    }
    while(1)
    {
        cout<<"Поиск информации по:\n";
        cout<<"1. По Марки: \n";
        cout<<"2. По серийному номеру: \n";
        cout<<"3. По характеристикам: \n";
        cout<<"4. По оценки производительности: \n";
        cout<<"5. По времени работы: \n";
        cout<<"6. Выход: \n";
        cout<<"Ваш выбор: ";
        cin.seekg(0l, ios::end);
        cin>>c;
        switch(c)
        {
            case '1':
                cout<<"Задайте марку поиска: ";
                cin.seekg(0l, ios::end);
                cin.get (marka, MARKA-1,'\n');
                break;
            case '2':
                cout<<"Задайте серийный номер устройства: ";
                cin.seekg(0l, ios::end);
                cin.get (s_n, S_N-1,'\n');
                                break;
            case '3':
                cout<<"Задайте характеритики: ";
                cin.seekg(0l, ios::end);
                cin.get (harakter, HARAKTER-1,'\n');
                                break;
            case '4':
                cout<<"Задайте оценку производительности: ";
                cin.seekg(0l, ios::end);
                cin>>ocenka_prz;
                                break;
            case '5':
                cout<<"Задайте Время работы: ";
                cin.seekg(0l, ios::end);
                cin>>chas_atm;
                                break;
            case '6':
                         fl.close();
                return;
        }
        fl.clear (!ios::eofbit);
        fl.seekg(0l, ios::beg);
        begtable();
        while(!fl.eof())
        {
            fl>>s;
            if (strlen(s.marka)<=0)
                break;
            if ((c=='1'&&strcmp(s.marka,marka)==0)||(c=='2'&&strcmp(s.s_n,s_n)==0)||(c=='3'&&strcmp(s.harakter,harakter)==0)||(c=='4'&&s.ocenka_prz==ocenka_prz)||(c=='5'&&s.chas_atm==chas_atm))
                cout<<s;
        }
        endtable();
        }
}
void udalenie()
{
    ifstream fl;
    ofstream fo;
    noutbook s;
        char marka[MARKA];
    char s_n[S_N];
    int prizn;
    fl.open ("noutbook.txt", ios::in);
    if (!fl)
    {
        cerr<<"Ошибка чтения\n";
        exit(1);
    }
    fo.open ("tmp.txt",ios::out);
    if (!fo)
    {
        cerr<<"Ошибка временного файла\n";
        exit(1);
    }
    cout<<"ВВедите марку оборудования: ";
    cin.seekg(0l, ios::end);
    cin.get (marka, MARKA-1, '\n');
    cout<<"ВВедите серийный номер: ";
    cin.seekg(0l, ios::end);
    cin.get (s_n, S_N-1, '\n');
    prizn=0;
    while (!fl.eof())
    {
        fl>>s;
                cout << s;
        if (strlen (s.marka)<=0)
            break;
        if (strcmp(s.s_n,s_n)==0)
        {
            prizn=1;
            cout<<"Найдена запись для удаления\n";
        }
        else
            fo<<s;
    }
    fl.close();
    fo.close();
    if (prizn==1)
    {
        remove ("noutbook.txt");
        rename ("tmp.txt","noutbook.txt");
    }
    else
        remove ("tmp.txt");

}

void redakt()
{
    ifstream fl;
    ofstream fo;
    noutbook s;
        char marka[MARKA];
    char s_n[S_N];
    char harakter[HARAKTER];
    int ocenka_prz;
    int chas_atm;
        char c;
    int prizn;
    fl.open ("noutbook.txt", ios::in);
    if (!fl)
    {
        cerr<<"Ошибка чтения\n";
        exit(1);
    }
    fo.open ("tmp.txt",ios::out);
    if (!fo)
    {
        cerr<<"Ошибка временного файла\n";
        exit(1);
    }
        fl.clear (!ios::eofbit);
        fl.seekg(0l, ios::beg);
    cout<<"ВВедите серийный номер: ";
    cin.seekg(0l, ios::end);
    cin.get (s_n, S_N-1, '\n');
    prizn=0;
    while (!fl.eof())
    {
        fl>>s;
                cout<<s;
        if (strlen (s.marka)<=0)
            break;
        if (strcmp(s.s_n,s_n)==0)
    {
            prizn=1;
            cout<<"Найдена запись на редактирование\n";
            while (1)
            {
    cout<<"Что вы хотите отредактировать в данной записи\n";
    cout<<"1. Редактировать Марку оборудования \n";
    cout<<"2. Редактировать серийный номер \n";
    cout<<"3. Редактировать характеристики \n";
    cout<<"4. Редактировать оценку \n";
    cout<<"5. Редактировать время работы \n";
    cout<<"6. РЕДАКТИРОВАТЬ ЗАПИСЬ ПОЛНОСТЬЮ \n";
    cout<<"7. Выход \n";
    cout<<"Ваш выбор: ";
    cin.seekg(0l, ios::end);
    cin>>c;
    if (c=='7')
        break;
        switch(c)
            {
        case '1':
            cout<<"ВВедите новую МАРКУ оборудования: ";
            cin.seekg(0l, ios::end);
            cin.get (s.marka, MARKA-1,'\n');
            break;
        case '2':
            cout<<"Введите новый Серийный номер= ";
            cin.seekg(0L, ios::end);
            cin.get(s.s_n,S_N-1,'\n');
            break;
        case '3':
            cout<<"Введите новые характеристики= ";
            cin.seekg(0L, ios::end);
            cin.get(s.harakter,HARAKTER-1,'\n');
            break;
        case '4':
            cout<<"Укажите новую оценку производительности= ";
            cin.seekg(0L, ios::end);
            cin>>s.ocenka_prz;
            break;
        case '5':
            cout<<"Укажите время работы= ";
            cin.seekg(0L, ios::end);
            cin>>s.chas_atm;
            break;
        case '6':
            cout<<"ВВедите новую запись Марки= ";
            cin.seekg(0L, ios::end);
            cin.get(s.marka,MARKA-1,'\n');
            cout<<"Введите новый Серийный номер= ";
            cin.seekg(0L, ios::end);
            cin.get(s.s_n,S_N-1,'\n');
            cout<<"Введите новые характеристики= ";
            cin.seekg(0L, ios::end);
            cin.get(s.harakter,HARAKTER-1,'\n');
            cout<<"Укажите новую оценку производительности= ";
            cin.seekg(0L, ios::end);
            cin>>s.ocenka_prz;
            cout<<"Укажите время работы= ";
            cin.seekg(0L, ios::end);
            cin>>s.chas_atm;
                        break;
        case '7':
            break;
            }
        }
        }        
            fo<<s;
    }
    fl.close();
    fo.close();
    if (prizn==1)
    {
        remove ("noutbook.txt");
        rename ("tmp.txt","noutbook.txt");
    }
    else
        remove ("tmp.txt");
             
}

Void sotrirovka() //прототит сортировки (метод вставки)
{

}


void main ()
{
    char c;
    while(1)
    {
        cout<<"1. Создание базы\n";
        cout<<"2. Добавление\n";
        cout<<"3. Вывод всей информации\n";
        cout<<"4. Выборка по различным полям\n";
        cout<<"5. Редактирование\n";
        cout<<"6. Удаление\n";
                cout<<"7. Сортировка\n";
        cout<<"8. Выход\n";
        cout<<"Ваш выбор: ";
        cin.seekg(0l,ios::end);
        cin>>c;
        switch (c)
        {
            case '1':
            case '2':
                sozdanie (c);
                break;
            case '3':
                output();
                break;
            case '4':
                poisk();
                break;
            case '5':
                redakt();
                break;
            case '6':
                udalenie();
                break;
            case '7':
                sortirovka;
                                break;
            case '8':
                return;
        }
    }
}


Прикрепляю файл, в котором он должен сделать сортировку.

Ps саму функцию и пункт в меню уже добавил, нажен сам код сортировки.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  NOUTBOOK.TXT 0,13 Kb
PM MAIL   Вверх
borisbn
Дата 5.4.2012, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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





--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
xvr
Дата 5.4.2012, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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