Вот всё моё детище целиком рабочее Код | # include <iostream> # include <string.h> # include <windows.h> # include <stdio.h>
using namespace std; struct Storage{char titl[30];char autor[30];};
Storage Put();
Storage **AddBook(Storage**S,int &n);
Storage **NweBook(Storage**S,int &n);
Storage **DelBook(Storage**S,int &n);
Storage **SortBook(Storage**S,int &n);
int TSerchBook(Storage**S,int &n,int &index);
int ASerchBook(Storage**S,int &n,int &index);
Storage **AddBook(Storage**S,int &n);
void OutputBook(Storage**S,int &n);
Storage Put(){ // формирование объкта Storage temp; cout<<"\n Введите название : "; cin>>temp.titl; cout<<"\n Введите автора :"; cin>>temp.autor; return temp; } void OutputBook(Storage**S,int &n) { Storage temp; for(int i=0;i<n;i++) { temp=*S[i]; cout <<i<<":\t"<<temp.titl<<":\t" <<temp.autor<<'\n'; } } Storage **SortBook(Storage**S,int &N) { Storage tmp,tmp1; for(int i=0;i<=N-1;i++) { for(int j=N-1;j>i;j--) { tmp=*S[j]; tmp1=*S[j-1]; int r= strncmp(tmp.titl,tmp1.titl,1); if(r<0) { Storage *p=S[j]; S[j]=S[j-1]; S[j-1]=p; r=0; } } }
return S; } Storage **DelBook(Storage**S,int &N) { int t=N; Storage**temp=new Storage*[--N]; for(int i=0;i<N;i++) { temp[i]=new Storage; } for(int i=0;i<N;i++) { *temp[i]=*S[i]; } for(int i=0;i<t;i++) { delete[] S[i]; } delete S; return temp; } Storage **AddBook(Storage**S,int &N) { int t=N; Storage**temp=new Storage*[++N]; for(int i=0;i<N;i++) { temp[i]=new Storage; } for(int i=0;i<N-1;i++) { *temp[i]=*S[i]; } *temp[N-1]=Put(); for(int i=0;i<t;i++) { delete[] S[i]; } delete S; return temp; } int ASerchBook(Storage**S,int &N,int &index) { Storage tmp,tmp1; cout << "\n Введите автора :"; cin >>tmp1.autor; for(int i=0;i<=N;i++) { for(int j=0;j<N;j++) { tmp=*S[j]; int r= strncmp(tmp.autor,tmp1.autor,1); if(r==0) { index=j; return 1; } } } return 0; } int TSerchBook(Storage**S,int &N,int &index) { Storage tmp,tmp1; cout << "\n Введите название книги :"; cin >>tmp1.titl; for(int i=0;i<=N;i++) { for(int j=0;j<N;j++) { tmp=*S[j]; int r= strncmp(tmp.titl,tmp1.titl,1); if(r==0) { index=j; return 1; } } } return 0; } Storage **NewBook(Storage**S,int &N) { int t=N; cout << "\n Введите n:"; cin >> N;
Storage**temp=new Storage*[N];
for(int i=0;i<N;i++) { temp[i]=new Storage; } for(int i=0;i<N;i++) { *temp[i]=Put(); } for(int i=0;i<t;i++) { delete []S[i]; } delete S; return temp;
}
void main() { SetConsoleOutputCP(1251); int n=0,v=0,x=0,&N=n, &index=x; cout<<"\n Введите n= "; cin >> n;
Storage **S=new Storage*[n];
for(int i=0;i<n;i++) { S[i]=new Storage; } for(int i=0;i<n;i++) { *S[i]=Put(); } while(v!=8) { system("cls"); cout << "\t\t\t\t Меню \n\n"; cout << "1. Новый список \n\n"; cout << "2. Добавить элемент списка \n\n"; cout << "3. Удалить элемент списка \n\n"; cout << "4. Сортировка \n\n"; cout << "5. Вывод элементов списка на экран \n\n"; cout << "6. Поиск списка по названию \n\n"; cout << "7. Поиск списка по автору \n\n"; cout << "8. Выход \n\n"; cout << "Ваш выбор :"; cin >> v; cout << '\n';
switch(v) { case 1: { S=NewBook(S,n); cout <<"\n"; break; } case 2: { S=AddBook(S,n); cout <<"\n"; break; } case 3: { S=DelBook(S,n); cout <<"\n"; break; } case 4: { S=SortBook(S,n); cout << '\n'; break; } case 7: { int R=ASerchBook(S,n,index); if(R==1)cout<<"Книга этого автора под № :"<<index; if(R==0)cout<<"Книги этого автора нет в списке \n"; cout <<"\n"; Sleep(2000); break; } case 5: { OutputBook(S,n); cout <<"\n"; Sleep(2000); break; } case 6: { int R=TSerchBook(S,n,index); if(R==1)cout<<"Книга этого автора под № :"<<index; if(R==0)cout<<"Книги этого автора нет в списке \n"; cout <<"\n"; Sleep(2000); } } }
for(int i=0;i<N;i++) { delete[]S[i]; } delete S; }
|
|