Pues eso, creo que ahora si me salio el array de longitud variable sin perder datos que necesitaba en mi tema anterior (Como hacer un array de longitud variable?)
Ahora quisiera que me digan si realmente esta bien y puedo implemetarlo en mi programa, que es de registrarse y luego acceder a tu al sistema con tu nombre y contraseña
#include <iostream>
#include <cstdlib>
using namespace std;
struct Registro
{
string Codigo;
string Nombre;
int Edad;
int DNI;
//void Acceder();
};
int Menu_Principal();
void Registrarse(Registro *P,int x);
//int i=1;
int Menu_Principal()
{
int opcion;
cout<<"MENU PRINCIPAL\n"<<endl;
cout<<"1) Acceder\n2) Registrarse\n3) Salir\n\nIngrese una opcion: "<<endl;
cin>>opcion;
return opcion;
}
void Registrarse(Registro *P,int x)
{
cout<<"PROCESO DE REGISTRO\n"<<endl;
cout<<"Ingrese su Nombre Completo: ";
getline(cin,(*(P+(x-1))).Nombre);
cout<<"Ingrese su codigo de acceso (Solo 5 digitos): ";
getline(cin,(*(P+(x-1))).Codigo);
cout<<"Ingrese su edad: ";
cin>>(*(P+(x-1))).Edad;
cout<<"Ingrese su DNI: ";
cin>>(*(P+(x-1))).DNI;
}
int main()
{
int j=1;
int i;
string nom,cod;
Registro *Persona;
Registro *Persona2;
do
{
if(j<2)
Persona=new Registro[j];
if(j%2==1)//si es impar
Registrarse(Persona,j);
else
Registrarse(Persona2,j);
j=j+1;
fflush(stdin);
if(j%2==0)//si es par
Persona2= new Registro[j];
else
Persona=new Registro[j];
for(i=0;i<j-1;i++)
{
if(j%2==0)
nom=Persona.Nombre;
else
nom=Persona2.Nombre;
if(j%2==0)
cod=Persona.Codigo;
else
cod=Persona2.Codigo;
if(j%2==0)
Persona2.Nombre=nom;
else
Persona.Nombre=nom;
if(j%2==0)
Persona2.Codigo=cod;
else
Persona.Codigo=cod;
}
if(j%2==0)
cout<<Persona2[0].Nombre<<endl;
else
cout<<Persona[0].Nombre<<endl; /*Esto es para comprobar que no hay perdida de datos al copiar los datos y que primer dato siempre es el mismo*/
if(j%2==0)
delete []Persona;
else
delete []Persona2;
system("CLS");
}
while(1);
getchar();getchar();
return 0;
}
Pues tienes dos formas de hacer un array de longitud variable: arrays redimensionables y listas enlazadas.
Los arrays redimensionales consiste en crear una copia temporal de los datos de tu array, crear un nuevo array con new() con un tamaño superior para el nuevo registro, y a continuación vuelcas toda la información del array temporal en el nuevo.
Las listas enlazadas tienen un poco más de trabajo, pero son más ágiles. En google encontrarás información sobre ellas o mismo en el foro.
Saludos.
ya lo se pero queria hacerlo sin esas cosas, ademas que aun no llego al tema de listas enlazadas y stl, pero queria saber si mi algoritmo esta bien