EDITO: Para no crear un post tonto...
Díganme si el uso que le he dado a un puntero que apunta a una clase en la función bubble está bien hecho o no se debería de hacer así por favor.
Código
#include <iostream> using namespace std; class base { private: bool rellena;//0 no tiene contenido . 1 tiene contenido char *nombre; char *tlf; public: base(); void del(); void dnuevo(); void editar(); void view(int n); void freeram(); }; base::base(){ rellena = false; nombre = new char[20]; tlf = new char[20]; }; void base::del(){ }; void base::dnuevo(){ cout << "\nIntroduce un nombre: " ; cin >> nombre; cout << "\nIntroduce un telefono: "; cin >> tlf; rellena=true; }; void base::freeram(){ delete[] nombre; delete[] tlf; }; void base::editar(){ dnuevo(); }; void base::view(int n){ cout << "---------------------------------------------------------" << endl; cout << "Nombre: "; if(rellena==true)cout << nombre; cout << endl; cout << "Tlfn: "; if(rellena==true)cout << tlf ; cout << endl; cout << "---------------------------------------------------------" << endl; cout << "1-Nuevo\t2-Eliminar 3-Salir 4-Editar 8-Pagback 9-Pagnext\t Pag: " << n << endl; }; void bubble(int n1,int n2,base b[]){ base *p; for(int i=n1;i<n2;i++){ p=&b[i+1]; b[i]=*p; } }; int main(int argc,char *argv[]){ base b[10]; int pag=1; int evento=0; int pagmax=0; while(1){ b[pag].view(pag); cout << "Opcion: "; cin >> evento; if(evento==1){ pagmax=pagmax+1; pag=pagmax; b[pag].dnuevo(); } else if(evento==2){ if(pag!=1){ bubble(pag,pagmax,b); pagmax--; } } else if(evento==3)break; else if(evento==4)b[pag].editar(); else if(evento==8 && pag>1)pag--; else if(evento==9 && pag < pagmax)pag++; evento=0; cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n" ; } for(int i=0;i<10;i++)b[i].freeram(); cout << "El programa se cerrara" << endl; cin.get(); return 0; }
Saludos