When you put data in double enter is needed. Pass that mistake.
Code:
#include<iostream>
using namespace std;
struct book {
string author;
string title;
string publisher;
int pubyear;
float price;
};
char op = 'a'; bool idcall=0; int i=0;
book *B;
bool choice(char, bool);
int main();
void datainput(){
int n=0;
book *A; A = new book[i]; B = new book[i];
do{
delete[] B;
B = new book[i+1];
cout<<"\n Author: "; getline(cin, B[i].author); cin.ignore();
cout<<" Title: "; getline(cin, B[i].title); cin.ignore();
cout<<" Publisher: ";getline(cin, B[i].publisher); cin.ignore();
cout<<" Publication year: ";cin>> B[i].pubyear; cin.ignore();
cout<<"\n Price: "; cin>>B[i].price; cin.ignore();
n=i;
if(i!=0)for(i-=1;i>=0;i--)B[i]=A[i];
i=n; delete[] A;
if(n==0){A = new book[i+1];A[i]=B[i];}
else {A = new book[n+1]; for(;n>=0;n--) A[n]=B[n];}
i++;
cout<<"\n\n Would you like to register futher more? (y for Yes, n for No): "; cin>>op; cin.ignore(); idcall=1;
choice(op, idcall);
}while(idcall==0); main();
}
bool choice(char op, bool idcall){
entry:
switch(op){
case 'y': if(idcall==0) datainput();
else {::idcall=0; return(idcall);}
case 'n': if(idcall==0) exit(0);
else return(idcall);
default: cout<<"\n Read more careful, please.";
if(idcall==0) cout<<" Would you like to put data in? (y for Yes, n for No): "; cin>>op; cin.ignore(); break;
if(idcall==1) cout<<" Would you like to register futher more? (y for Yes, n for No): "; cin>>op; break;
}
goto entry;
}
int main(){
if(idcall==1) goto lastpart;
cout<<" The database editor is ready.\n Are you sure that you would like to put data in? (y for Yes, n for No): ";
cin>>op; cin.ignore(); choice(op, 0);
lastpart:
for(i-=1;i>=0;i--){cout<<endl<<"\n Author: "<<B[i].author;cout<<endl<<"\n Title: "<<B[i].title; cout<<endl<<"\n Publisher: "<<B[i].publisher;
cout<<endl<<"\n Publication year: "<<B[i].pubyear;cout<<endl<<"\n Price: "<<B[i].price;cout<<"\n\n";}
cin.get();
}