Списки

Тема в разделе "C/C++/C#", создана пользователем Romashkinu, 14 янв 2012.

Статус темы:
Закрыта.
  1. Romashkinu

    Romashkinu Гость

    Здравствуйте уважаемые программисты.
    В данный момент необходимо сдать курсовой проект, задачей которого является "разработать программу на языке Си++ с использованием динамических массивов структур для обработки базы данных «Кинофильмы» ".
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Полное задание по программному коду</div></div><div class="sp-body"><div class="sp-content">разработать программу на С++ с использованием динамических массивов, списков и структур. Обработка данных должна включать следующие функции:
    1) создание новой базы данных (с возможностью задания имени файла);
    2) просмотр существующей базы данных (чтение данных осуществляется из файла);
    3) редактирование базы данных (с сохранением изменений в файле);
    4) дополнение базы данных новыми записями ( с сохранением в файле);
    5) удаление записей из базы данных (с сохранением в файле) ;
    6) поиск в базе данных ( по одному и двум поисковым признакам) с выводом на экране найденных записей или сообщения о неуспешном поиске;
    7) сортировка данных по заданному полю (с сохранением в файле).

    Показал преподавателю, он сказал что всё нормально, но нехватает списков.
    Помогите! Что это за списки? Для чего они нужны? И куда их нужно внедрить в данную программу.

    Программный код

    Код (C++):
          /*Объявление библиотек*/
    #include <iostream.h>
    #include <fstream.h>
    #include <conio.h>
    #include <string.h>
    #include <iomanip.h>
    #include <math.h>
    #include <stdlib.h>

    //Оснавная структура
    struct Cinema
    {
    char name[20];
    char genre[20];
    char date[20];
    int kol_nagrad;
    int kass_sbor;
    };

    // класс динамический массив структур
    class cine
    {
    private:
    Cinema *px; // указатель на массив записей
    int n; // число строк в массиве
    int f; // число найденных строк
    public:
    cine(){n=0;px=NULL;} // конструктор
    ~cine(){n=0;if(px!=NULL)delete[]px;}// диструктор

    //объявление функций
    void inputfile(); //ввод БД из файла
    void outputfile(); //сохранение БД в файл
    void New(); //создание новой БД
    void output(); //вывод БД на экран
    void redakt(); //редактирование БД
    int stroka(); //выбор нужной строки
    void add(); //добавление новой записи
    void Delete(); //удаление записи
    void rezultat(); //вывод результатов поиска на экран
    void poisk_name(); //поиск по названию фильма
    void poisk_genre(); //поиск по жанру фильма
    void poisk_date(); //поиск по дате выхода фильма
    void poisk_kol_nagrad(); //поиск по количеству наград
    void poisk_kass_sbor(); //поиск по кассовым сборам
    void poisk_name_genre(); //поиск по названию и жанру
    void poisk_name_date(); //поиск по названию и дате выхода
    void poisk_name_kol_nagrad(); //поиск по названию и количеству наград
    void poisk_name_kass_sbor(); //поиск по названию и кассовых сборах
    void poisk_genre_date(); //поиск по жанру и по дате выхода
    void poisk_genre_kol_nagrad(); //поиск по жанру и по количеству наград
    void poisk_genre_kass_sbor(); //поиск по жанру и кассовым сборам
    void poisk_date_kol_nagrad(); //поиск по дате выхода и количеству наград
    void poisk_date_kass_sbor(); //поиск по дате выхода и кассовых сборов
    void poisk_kol_nagrad_kass_sbor(); //поиск по количеству наград и кассовых сборах
    void sort_name(); //сортировка по названию фильма
    void sort_genre(); //сортировка по жанру
    void sort_date(); //сортировка по дате выхода
    void sort_kol_nagrad(); //сортировка по количеству наград
    void sort_kass_sbor(); //сортировка по кассовым сборам
    };

    void cine::inputfile() //ввод БД из файла
    {
    ifstream fin;
    int i;   //рабочая переменная для подсчёта
    Cinema t; //рабочая переменная для подсчёта записей в файле
    char file[10]; //переменная для названия файла
    if(px!=NULL){delete[]px;n=0;px=NULL;} //очистка рабочей области(массива)
    cout<<"Imya vhodnogo faila: ";
    cin>>file;
    fin.open(file);
    if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
    n=0;
    //подсчёт записей в файле
    do{fin>>t.name>>t.genre>>t.date>>t.kol_nagrad>>t.kass_sbor;
    n++;
    } while(fin.good()); //пока файл не закончился
    n--;
    fin.close();
    px=new Cinema[n]; //выделение динамической памти
    if(px==NULL){cout<<"Net pamyati\n";n=0;getch();return;}
    fin.open(file);
    if(fin==NULL){cout<<file<<" Ne otkruit\n";getch();return;}
    //ввод массива из файла
    for(i=0;i<n;i++)
    {fin>>px[i].name>>px[i].genre>>px[i].date>>px[i].kol_nagrad>>px[i].kass_sbor; }
    fin.close();
    }
    void cine::outputfile() //сохранение БД в файл
    {
    ofstream fout;
    char file[20]; //переменная для названия файла
    int i; //рабочая переменная для подсчёта
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout<<"Vvedite fail dlya sohraneniya: ";cin>>file;
    fout.open(file,ios::out|ios::trunc);
    if(fout.fail()){cout<<file<<" Ne sozdan\n";getch();n=0;px=NULL;return;}
    //запись БД в файл
    for(i=0;i<n;i++)
    {fout.setf(ios::left);
    fout<<setw(12)<<px[i].name<<setw(12)<<px[i].genre<<setw(12)<<px[i].date
    <<setw(12)<<px[i].kol_nagrad<<setw(12)<<px[i].kass_sbor<<endl;
    }
    cout<<"Baza dannuih sohranena\n";getch();
    }
    void cine::New() //создание новой БД
    {
    int i;  //рабочая переменная для подсчёта
    cout<<"Kolichestvo zapisey=";cin>>n;
    if(px!=NULL)delete[] px; //очистка рабочей области(массива)
    px=new Cinema[n];    //выделение динамической памяти
    if(px==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
    //создание базы данных
    for(i=0;i<n;i++)
    {cout<<"Kino:";     cin>>px[i].name;
    cout<<"Janr: ";      cin>>px[i].genre;
    cout<<"Data_Vihoda: ";      cin>>px[i].date;
    cout<<"Kolishestvo_nagrad: "; cin>>px[i].kol_nagrad;
    cout<<"Kassovi_sbor: "; cin>>px[i].kass_sbor;
    cout<<endl;
    }cout<<"Baza dannuih sozdana";getch();
    }
    void cine::output() //вывод БД на экран
    {
    int i; //переменная для подсчёта
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    clrscr(); //очистка экрана
    cout.setf(ios::left); //выравнивание слева
    cout<<endl<<"Baza dannuih 'Kino'\n"<<endl;
    cout<<"N"<<" "<<setw(15)<<"Nazvanie"<<setw(15)<<"genre"<<setw(15)<<"data_vihoda"
    <<setw(15)<<"Kol_nagrad"<<setw(15)<<"Kassovie_sbori'"<<endl;
    //вывод БД на экран
    for(i=0;i<n;i++)
    {cout.setf(ios::left); i++;
    cout<<setw(3)<<i<<setw(15)<<px[i-1].name<<setw(15)<<px[i-1].genre<<setw(15)<<px[i-1].date<<setw(15)<<px[i-1].kol_nagrad<<setw(15)<<px[i-1].kass_sbor<<endl;
    i--; };
    getch();
    }
    int cine::stroka() //выбор нужной строки
    {
    int k; //рабочая переменная для выбора строки
    cout.setf(ios::left); //выравнивание слева
    output(); //вызывается функция вывода БД на экран
    cout<<"Vuiberite stroku: ";cin>>k;
    if(k<0|| k>n+1){cout<<"Net takoi stroki\n";getch();}
    k--;
    return k;
    }
    void cine::redakt() //редактирование БД
    {
    int j, //рабочая переменная для выбора пункта
    N; //рабочая переменная для вызова функции
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    N=stroka(); //вызывается функция выбора строки
    while(1)
    {clrscr(); //очистка экрана
    {cout.setf(ios::left);
    cout<<setw(12)<<px[N].name<<setw(12)<<px[N].genre<<setw(12)<<px[N].date<<setw(12)<<px[N].kol_nagrad<<setw(12)<<px[N].kass_sbor<<endl;
    }

    cout.setf(ios::left); //выравнивание слева
    cout<<"1.Nazvanie\n"<<"2.genre\n"<<"3.Data_vihoda\n"<<"4.Kol_nagrad\n"<<"5.Kassovie_sbori\n"<<"6.menu\n"
    <<"Vash vuibor ";cin>>j;
    if(cin.good())
    //выбор редактируемого поля
    switch(j)
    {case 1:cout<<"Nazvanie: ";      cin>>px[N].name;break;
    case 2:cout<<"Genre: ";       cin>>px[N].genre;break;
    case 3:cout<<"Data_vihoda: ";        cin>>px[N].date;break;
    case 4:cout<<"Kol_nagrad: ";  cin>>px[N].kol_nagrad;break;
    case 5:cout<<"Kassovie_sbori: ";     cin>>px[N].kass_sbor;break;
    case 6:return;
    default :cout<<"Neverniy vuibor\n povtorite\n";getch();
    }
    else
    {cout<<"Oshibka vvoda\n";getch();
    cin.clear(); //очистка потока ввода
    while(cin.get()!='\n')
    return;
    }
    }

    }
    void cine::add()//добавление новой записи
    {
    int i;
    Cinema t,
    *p;
    if(px==NULL){cout<<"massiv pyst\n";getch();return;}
    cout<<"Nazvanie: ";      cin>>t.name;
    cout<<"Genre: ";          cin>>t.genre;
    cout<<"Data_vihoda: ";       cin>>t.date;
    cout<<"Kol_nagrad: ";  cin>>t.kol_nagrad;
    cout<<"Kassovie_sbori: ";    cin>>t.kass_sbor;
    p=px;
    px=new Cinema[n+1];
    if(px==NULL){cout<<"Net pamyati.\n";getch();return;}
    for(i=0;i<n;i++)
    px[i]=p[i];
    px[n]=t;
    n++;
    delete[]p;
    cout<<"Zapis dobavlena\n";getch();
    }
    void cine::Delete()//удаление записи
    {
    int i,N;
    Cinema *t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    t=new Cinema[n-1];
    if(t==NULL){cout<<"Net pamyati\n";getch();n=0;return;}
    if(n==1){delete[] px;px=NULL;}
    else {N=stroka();
    for(i=0;i<N;i++)
    t[i]=px[i];
    for(i=N+1;i<n;i++)
    t[i-1]=px[i];
    delete[] px;
    px=t;
    }
    n--;cout<<"zapis udalena\n";getch();
    }
    void cine::rezultat()//вывод результатов поиска на экран
    {
    int i;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    clrscr();
    cout.setf(ios::left);
    cout<<endl<<"Rezultatui poiska\n"<<endl;
    cout<<setw(3)<<"N"<<setw(12)<<"Nazvanie"<<setw(12)<<"Genre"<<setw(12)<<"Data_vihoda"
    <<setw(12)<<"Kol_nagrad"<<setw(12)<<"Kassovie_sbori"<<endl;
    for (i=0;i<f;i++)
    {cout.setf(ios::left); i++;
    cout<<setw(3)<<i<<setw(12)<<px[i-1].name<<setw(12)<<px[i-1].genre<<setw(12)<<px[i-1].date
    <<setw(12)<<px[i-1].kol_nagrad<<setw(12)<<px[i-1].kass_sbor<<endl;i--;
    }
    getch();
    }
    void cine::poisk_name()//поиск по названию фильма
    {
    int i;
    char h[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Kino: "; cin>>h;
    f=0;
    for (i=0;i<n;i++)
    if(strcmp(px[i].name,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_genre()//поиск по жанру фильма
    {
    int i;
    char h[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Genre: "; cin>>h;
    f=0;
    for (i=0;i<n;i++)
    if(strcmp(px[i].genre,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }
    void cine::poisk_date()//поиск по дате выхода фильма
    {
    int i;
    char h[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Data: "; cin>>h;
    f=0;
    for (i=0;i<n;i++)
    if(strcmp(px[i].date,h)==0)
    { px[f]=px[i];    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }
    void cine::poisk_kol_nagrad()//поиск по количеству наград
    {
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Kolishestvo Nagrad: "; cin>>c;
    f=0;
    for (i=0;i<n;i++)
    if(px[i].kol_nagrad==c)
    { px[f]=px[i];
    f++;}
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }
    void cine::poisk_kass_sbor()//поиск по кассовым сборам
    {
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"kass_sbor: "; cin>>c;
    f=0;
    for (i=0;i<n;i++)
    if(px[i].kass_sbor==c)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }


    // поиск по двум поисковым признакам

    void cine::poisk_name_genre()//поиск по названию и жанру
    {
    int i;
    char h[10], c[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Nazvanie: "; cin>> c;
    cout <<"Genre: "; cin>> h;
    f=0;
    for (i=0;i<n;i++)
    if (stricmp(px[i].name,c)==0 && stricmp(px[i].genre,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }
    void cine::poisk_name_date()//поиск по названию и дате выхода
    {
    int i;
    char h[10], c[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Zoopark: "; cin>> c;
    cout <<"Animal: "; cin>> h;
    f=0;
    for (i=0;i<n;i++)
    if (stricmp(px[i].name,c)==0 && stricmp(px[i].date,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_name_kol_nagrad() //поиск по названию и количеству наград
    {
    int i,c;
    char h[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Nazvanie: "; cin>> h;
    cout <<"Kol_Nagrad: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kol_nagrad==c && stricmp(px[i].name,h)==0)
    { px[f]=px[i];
    f++;}
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_name_kass_sbor() //поиск по названию и кассовых сборах
    {int i,c;
    char h[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Nazvanie: ";     cin>> h;
    cout <<"kass_sbor: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kass_sbor==c && stricmp(px[i].name,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_genre_date() //поиск по жанру и по дате выхода
    {
    int i;
    char h[10], c[10];
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"genre: "; cin>> c;
    cout <<"data: "; cin>> h;
    f=0;
    for (i=0;i<n;i++)
    if (stricmp(px[i].genre,c)==0 && stricmp(px[i].date,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_genre_kol_nagrad() //поиск по жанру и по количеству наград
    {char h[10];
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"genre: "; cin>> h;
    cout <<"Kolishestvo_nagrad: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kol_nagrad==c && stricmp(px[i].genre,h)==0)
    { px[f]=px[i];
    f++;}
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_genre_kass_sbor() //поиск по жанру и кассовым сборам
    {
    char h[10];
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Genre: ";     cin>> h;
    cout <<"Kassovi_sbor: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kass_sbor==c && stricmp(px[i].genre,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_date_kol_nagrad() //поиск по дате выхода и количеству наград
    {char h[10];
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"Data: "; cin>> h;
    cout <<"Kolishest_nagrad: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kol_nagrad==c && stricmp(px[i].date,h)==0)
    { px[f]=px[i];
    f++;}
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }

    void cine::poisk_date_kass_sbor() //поиск по дате выхода и кассовых сборов
    {
    char h[10];
    int i,c;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"date: ";     cin>> h;
    cout <<"kass_sbor: "; cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kass_sbor==c && stricmp(px[i].date,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }
    void cine::poisk_kol_nagrad_kass_sbor() //поиск по количеству наград и кассовых сборах
    { int i,c,h;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    cout <<"kol_nagrad: "; cin>>h;
    cout <<"kass_sbor: ";  cin>> c;
    f=0;
    for (i=0;i<n;i++)
    if (px[i].kass_sbor==c && (px[i].kol_nagrad,h)==0)
    { px[f]=px[i];
    f++;
    }
    if(f==0) {cout<<"Net takoi zapisi\n";getch();return;}
    rezultat();return;
    }



    // сортировка по заданному полю

    void cine::sort_name() //сортировка по названию фильма
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].name, px[i+1].name )>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].name,px[i+1].name)==0)
    {
    if(strcmp(px[i].genre, px[i+1].genre)>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_genre() //сортировка по жанру
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].genre, px[i+1].genre)>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].genre,px[i+1].genre)==0)
    {
    if(strcmp(px[i].date, px[i+1].date)>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_date() //сортировка по дате выхода
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].genre, px[i+1].genre)>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].genre,px[i+1].genre)==0)
    {
    if(px[i].date>px[i+1].date)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }}

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_kol_nagrad() //сортировка по количеству наград
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(px[i].kol_nagrad>px[i+1].kol_nagrad)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(px[i].kol_nagrad==px[i+1].kol_nagrad)
    {
    if(px[i].kass_sbor>px[i+1].kass_sbor)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_kass_sbor() //сортировка по кассовым сборам
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {
    fl=0;
    for(i=0;i<l;i++)
    if(px[i].kass_sbor>px[i+1].kass_sbor)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(px[i].kass_sbor==px[i+1].kass_sbor)
    {
    if(strcmp(px[i].name, px[i+1].name )>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }
    l--;
    }
    while(fl==1);
    output();
    return;
    }

    // Главная программа

    void main ()
    {
    cine a;
    int j, fl;
    while (1)
    {clrscr();
    cout<<"\n"<<" "<<"1.Novaya baza dannuih\n"
    <<" "<<"2.Prosmotr bazui dannuih iz faila\n"
    <<" "<<"3.Redaktirovanie bazui dannuih\n"
    <<" "<<"4.Dobavlenie novoi zapisi\n"
    <<" "<<"5.Udalenie zapisi\n"
    <<" "<<"6.Prosmotr bazui dannuih\n"
    <<" "<<"7.Poisk po odnomu kriteriui\n"
    <<" "<<"8.Sortirovka \n"
    <<" "<<"9.Poisk po dvum kriteriyam\n"
    <<" "<<"10.Sohranenie bazui dannuih\n"
    <<" "<<"0.Exit\n"
    <<"Vash vuibor:";cin>>j;
    if(cin.good())
    switch(j)
    {case 1:a.New();break;
    case 2:a.inputfile();a.output();break;
    case 3:a.redakt();break;
    case 4:a.add();break;
    case 5:a.Delete();break;
    case 6:a.output();break;
    case 7:fl=0;
    while(fl==0)
    {clrscr();
    cout<<"1.Poisk po nazvaniu filma\n"
    <<"2.Poisk po ganru\n"
    <<"3.Poisk po date vihoda\n"
    <<"4.Poisk po kolichestvo nagrad\n"
    <<"5.Poisk po kassovim sboram\n"
    <<"6.B Menu\n";
    cout<<"Vash vuibor:";
    cin>>j;
    if(cin.good())
    switch(j)
    {case 1:a.poisk_name();break;
    case 2:a.poisk_genre();break;
    case 3:a.poisk_date();break;
    case 4:a.poisk_kol_nagrad();break;
    case 5:a.poisk_kass_sbor();break;
    case 6:fl=1; break;

    default: cout<<"Net takogo pynkta\n";
    cout<<"Povtorite vash vuibor\n";
    getch();
    }
    else{cout<<"Oshibka vvoda\n";
    getch();
    cin.clear();
    while(cin.get()!='\n')
    continue;
    }

    }break;

    case 8:(fl=0);
    while(fl==0)
    {clrscr();
    cout<<"1.Sortirovka po nazvaniu filma\n"
    <<"2.Sortirovka po genru\n"
    <<"3.Sortirovka po date vihoda\n"
    <<"4.Sortirovka po kolishestvu nagrad\n"
    <<"5.Sortirovka po kassovim sboram\n"
    <<"6.Menu\n";
    cout<<"Vash vuibor:";
    cin>>j;
    if(cin.good())
    switch(j)
    {case 1:a.poisk_name();break;
    case 2:a.poisk_genre();break;
    case 3:a.poisk_date();break;
    case 4:a.poisk_kol_nagrad();break;
    case 5:a.poisk_kass_sbor();break;
    case 6:fl=1; break;

    default: cout<<"Net takogo pynkta\n";
    cout<<"Povtorite vash vuibor\n";
    getch();
    }
    else{cout<<"Oshibka vvoda\n";
    getch();
    cin.clear();
    while(cin.get()!='\n')
    continue;
    }

    }break;
    case 9:fl=0;
    while(fl==0)
    {clrscr();

    cout<<"1.Poisk po nazvaniu i ganry\n"
    <<"2.Poisk po nazvaniu i po date vihodu\n"
    <<"3.Poisk po nazvaniu i po kolishetvu nagrad\n"
    <<"4.Poisk po nazvaniu i po kassovih sborah\n"
    <<"5.Poisk po ganru i po date vihoda\n"
    <<"6.Poisk po ganru i po kol_nagrad\n"
    <<"7.Poisk po ganru i po kassovim sboram\n"
    <<"8.Poisk po date i po koloshestvu nagrad\n"
    <<"9.Poisk po date i po kassovim sboram\n"
    <<"10.Poisk po nomeru kolishestvu nagrad i po kassovim sboram\n"
    <<"11.Menu\n";
    cout<<"Vash vuibor: ";
    cin>>j;
    if(cin.good())
    switch(j)
    {case 1:a.poisk_name_genre();break;
    case 2:a.poisk_name_date();break;
    case 3:a.poisk_name_kol_nagrad();break;
    case 4:a.poisk_name_kass_sbor();break;
    case 5:a.poisk_genre_date();break;
    case 6:a.poisk_genre_kol_nagrad();break;
    case 7:a.poisk_genre_kass_sbor();break;
    case 8:a.poisk_date_kol_nagrad();break;
    case 9:a.poisk_date_kass_sbor();break;
    case 10:a.poisk_kol_nagrad_kass_sbor();break;
    case 11:fl=1; break;
    default: cout<<"Net takogo pynkta\n";
    cout<<"Povtorite vash vuibor\n";
    getch();
    }
    else{cout<<"Oshibka vvoda\n";
    getch();
    cin.clear();
    while(cin.get()!='\n')
    continue;
    }

    }break;

    case 10:a.outputfile();break;
    case 0:cout<<endl<<"GOOD BYE"<<endl;getch ();return;
    default :cout<<"Neverniy vuibor\n povtorite\n";getch();
    }
    else
    {cout<<"Oshibka vvoda\n";getch();
    cin.clear();
    while(cin.get()!='\n')
    continue;}}}
    P.S. В данной программе не работает сортировка, в чём может быть ошибка?


    Заранее спасибо!
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    про списки(что это такое,для чего нужны) почитай теорию в инете

    а про сортировку,какая именно не работает?
    и зачем весь код выложил,достаточного того блока где ошибка??
     
  3. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Он выложил весь код, потому что не знает, в какое место кода можно впихнуть списки.
     
  4. Romashkinu

    Romashkinu Гость

    Whatka
    Нужно чтобы он выполнял ещё сортировку, а вместо этого он выполняет поиск.
    Видимо ошибка в этой части программы
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Тут</div></div><div class="sp-body"><div class="sp-content">// сортировка по заданному полю

    Код (C++):
    void cine::sort_name() //сортировка по названию фильма
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].name, px[i+1].name )>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].name,px[i+1].name)==0)
    {
    if(strcmp(px[i].genre, px[i+1].genre)>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_genre() //сортировка по жанру
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].genre, px[i+1].genre)>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].genre,px[i+1].genre)==0)
    {
    if(strcmp(px[i].date, px[i+1].date)>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_date() //сортировка по дате выхода
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(strcmp(px[i].genre, px[i+1].genre)>0)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(strcmp(px[i].genre,px[i+1].genre)==0)
    {
    if(px[i].date>px[i+1].date)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }}

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_kol_nagrad() //сортировка по количеству наград
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {fl=0;

    for(i=0;i<l;i++)

    if(px[i].kol_nagrad>px[i+1].kol_nagrad)

    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(px[i].kol_nagrad==px[i+1].kol_nagrad)
    {
    if(px[i].kass_sbor>px[i+1].kass_sbor)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }

    l--;
    }
    while(fl==1);
    output();
    return;

    }
    void cine::sort_kass_sbor() //сортировка по кассовым сборам
    {
    int fl,i,l;
    Cinema t;
    if(px==NULL){cout<<"Massiv pust\n";getch();return;}
    l=n-1;
    do
    {
    fl=0;
    for(i=0;i<l;i++)
    if(px[i].kass_sbor>px[i+1].kass_sbor)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    else if(px[i].kass_sbor==px[i+1].kass_sbor)
    {
    if(strcmp(px[i].name, px[i+1].name )>0)
    {
    t=px[i];
    px[i]=px[i+1];
    px[i+1]=t;
    fl=1;
    }
    }
    l--;
    }
    while(fl==1);
    output();
    return;
    }
     
  5. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Whatka, не, ну ты понял! ошибка то в совсем маленьком кусочке кода!!!!!!! :lol:
     
  6. Romashkinu

    Romashkinu Гость

    Просто объясните для чего нужны списки в этой программе, и куда их "присобачить".
    Программа и без них нормально функционирует, но препод зануда, требует линейные списки!
     
  7. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Список можно использовать вместо любого массива. Зачем это надо преподу - не знаю. Возможно, он просто хочет убедиться, что вы умеете с ними работать.
     
  8. Romashkinu

    Romashkinu Гость

    В том то и дело что не умею, научите. :)
     
Загрузка...
Похожие Темы - Списки
  1. gx6060
    Ответов:
    0
    Просмотров:
    273
  2. kingl
    Ответов:
    5
    Просмотров:
    2.252
  3. shilovec5377
    Ответов:
    0
    Просмотров:
    1.186
  4. lmike
    Ответов:
    1
    Просмотров:
    1.868
  5. DNT
    Ответов:
    8
    Просмотров:
    4.019
Статус темы:
Закрыта.

Поделиться этой страницей