Списки

  • Автор темы Romashkinu
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Romashkinu

Гость
#1
Здравствуйте уважаемые программисты.
В данный момент необходимо сдать курсовой проект, задачей которого является "разработать программу на языке Си++ с использованием динамических массивов структур для обработки базы данных «Кинофильмы» ".
<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. В данной программе не работает сортировка, в чём может быть ошибка?


Заранее спасибо!
 

Whatka

Well-Known Member
09.10.2011
428
4
#2
про списки(что это такое,для чего нужны) почитай теорию в инете

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

Romashkinu

Гость
#4
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;
}
 

lazybiz

Well-Known Member
03.11.2010
1 339
0
#5
Whatka, не, ну ты понял! ошибка то в совсем маленьком кусочке кода!!!!!!! :lol:
 
R

Romashkinu

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

Vadik(R)

Well-Known Member
12.12.2007
469
0
#7
Список можно использовать вместо любого массива. Зачем это надо преподу - не знаю. Возможно, он просто хочет убедиться, что вы умеете с ними работать.
 
R

Romashkinu

Гость
#8
В том то и дело что не умею, научите. :)
 
Статус
Закрыто для дальнейших ответов.