[C con Clase] un acces en c++

Carlos Pizarro (GM) carlopiza en gmail.com
Mie Oct 27 00:05:43 CEST 2010


Por curiosidad; Que compilador usas?; Cuando lo intento en su forma original 
con el Dev-C++ me da varios errores.

----- Original Message ----- 
From: "wolf" <wolverine_ch en hotmail.com>
To: <cconclase en listas.conclase.net>
Sent: Sunday, October 24, 2010 10:45 PM
Subject: Re: [C con Clase] un acces en c++


hola amigos gracias por sus respuestas, acabo de terminar el codigo pero hay 
muchos errores logicos la verdad yame hice bolas ojala tengan la paciencia 
de ejecutarlo y decirme en que puedo mejorarlo =/
lo hice en base a insercion dinamica de tablas y campos por medio de una 
funcion crece cuando yano haya espacio

*por ahora solo me interesa la parte de diseņo de las tablas y no el ingreso
de datos



#include<stdio.h>
#include<conio.h>
#include<iostream.h>




class campo{

char* nombre3; //nombre del campo
int tipo;
char* nombretipo;
char* descripcion; //descripcion

public:

   void leer3();
   void presenta();

} ;



void campo::leer3(){
     int op;

cout<<"\n Nombre del campo: ";
fflush(stdin);
gets(nombre3);


                                 //aki ira el tipo de dato k contendra el 
atributo
    cout<<"\n Tipo de dato: ";

    cout<<"\n      [1]Entero";
    cout<<"\n      [2]Decimal";
    cout<<"\n      [3]Fecha/hora";
    cout<<"\n      [4]cadena";

    cout<<"\n              Ingrese opcion: ";
cin>>op;

switch(op){
case 1: nombretipo="entero";
break;
case 2: nombretipo="decimal";
break;

case 3: nombretipo="fecha/hora";
break;
case 4: nombretipo="cadena";
break;

}

cout<<"\n Descripcion del campo: ";
fflush(stdin);
gets(descripcion);
}


void campo::presenta(){

cout<<nombre3;
cout<<"    ";
       cout<<nombretipo;
       cout<<"    ";
cout<<descripcion;
getch();
}



///////////////////////////////////////////////////////////////////////////////////////////



class tabla{

  char nombre2[20]; /*nombre de la tabla*/
   int n2;
   int max2; //maximo de campos
   campo* data2;  //arreglo de campos



public:
tabla(){  //constructor
n2=max2=0;
         data2=NULL;
}
void leernombre2();
void inserta2(campo);
void crece2();
    void procesa2();
    void visualiza2();


 ~tabla(){delete data2;}//destructor
};


//definiendo funciones


void tabla::leernombre2()
{
 cout<<"\n\t TABLA: ";
 cout<<"\n nombre: ";
 fflush(stdin);
 gets(nombre2);

}


void tabla::procesa2(){

campo C;
int op;
do{
 clrscr();
cout<<"\t MENU :\n";
cout<<"[1] Agregar campo:\n";
cout<<"[2]Ver campos:\n";
cout<<"[3]Salir:\n";
cout<<"   Ingrese opcion: ";
cin>>op;

switch(op){
case 1:

        C.leer3();

        inserta2(C);
        break;



case 2: visualiza2();
        break;

}//fin switch

}while(!(op==3));


}// fin procesa






void tabla::inserta2(campo c){
  if(n2==max2)
     crece2(); // es llamada cuando yano hay espacio

 data2[n2]=c;
 n2++;
}



void tabla::crece2(){
  campo* temp2;

 temp2= new campo [max2 + 5]; //se reserva 5 espacios mas al arreglo data2

 for(int i=0; i<n2; i++) //aqui temp2 se llena hasta donde llegue el arreglo 
data2 kedando aun 5 espacios
   temp2[i]=data2[i];

delete data2;
data2=temp2; // ahora data tiene 5 espacios mas para almacenar
max2+=5;   // su max tbm debe ser aumentado en 5
}



void tabla:: visualiza2(){
if(n2 > 0){
  cout<<"\nCampos: \n";
 for(int i=0;i<n2;i++)

    data2[i].presenta();
}else
  cout<<"\nNO HAY CAMPOS";
}




///////////////////////////////////////////////////////////////////////////////////////////


class basedatos{
          char nombre1[];
          int max3; //Maximo de tablas
          int n3;
          tabla *data;  //arreglo de tablas


public:

 basedatos();  //constructor

 void leernombre1();
 void inserta(tabla);
 void crece();
 void procesa();
 void visualiza3();


 ~basedatos(){delete data;}//destructor

};


//definiendo funciones



basedatos::basedatos(){  //CONSTRUCTOR
        max3=n3=0;
        data=NULL;
}



void basedatos::leernombre1()
{
 cout<<"\n\t BASE DE DATOS: ";
 cout<<"\n nombre: ";
 fflush(stdin);
 gets(nombre1);

}

void basedatos::procesa(){

tabla T;
int op;
do{
 clrscr();
cout<<"\t MENU :\n";
cout<<"[1]Crear una tabla:\n";
cout<<"[2]Ver tablas:\n";
cout<<"[3]Salir:\n";
cout<<"   Ingrese opcion: ";
cin>>op;

switch(op){
case 1:

        T.leernombre2();
T.procesa2();
        inserta(T);
        break;



case 2: visualiza3();
        break;

}//fin switch

}while(!(op==3));


}// fin procesa







void basedatos::inserta(tabla t){
  if(n3==max3)
     crece(); // es llamada cuando yano hay espacio

 data[n3]=t;
 n3++;
}



void basedatos::crece(){
  tabla* temp;

 temp= new tabla [max3 + 5]; //se reserva 5 espacios mas al arreglo data

 for(int i=0; i<n3; i++) //aqui temp se llena hasta donde llegue el arreglo 
data kedando aun 5 espacios
   temp[i]=data[i];

delete data;
data=temp; // ahora data tiene 5 espacios mas para almacenar
max3+=5;   // su max tbm debe ser aumentado en 5
}



void basedatos:: visualiza3(){
if(n3 > 0){
for(int i=0;i<n3;i++){
   cout<<"\n\t TABLA N§ " <<i+1;
   data[i].visualiza2();  }
}else
  cout<<"\nNO HAY TABLAS";
}



main(){
basedatos B;
clrscr();
B.leernombre1();
B.procesa();

getch();


return 0;
_______________________________________________
Lista de correo Cconclase Cconclase en listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ 





Más información sobre la lista de distribución Cconclase