Programación General > C++ Builder
Apuntadores Dobles En C++
(1/1)
VeronicaNF:
class cliente
{
private:
char num[30];
cliente * sig;
public:
char * cliente:: getnum()
{
return num;
}
void cliente:: clien()
{
gets(num);
}
void cliente:: direccion(cliente * siguiente)
{
sig=siguiente;
}
cliente* cliente:: sigue()
{
return sig;
}
}
void insertar_antes(cliente **inicio)
{
cliente *aux, * aux2;
aux2= * inicio;
aux= new cliente;
aux->clien();
aux->direccion(aux2);
* inicio= aux;
}
void creacion(cliente** inicio)
{
cliente *aux;
aux=new cliente;
aux-> clien();
aux->direccion(NULL);
*inicio= aux;
}
void meter(cliente** inicio)
{
clien *aux;
aux= *inicio;
if(aux==NULL)
creacion(&aux);
else
insertar_antes(&aux);
*inicio=aux;
}
void sacar(cliente** inicio)
{
cliente*aux;
cliente *aux2;
aux=*inicio;
if(aux==NULL)
cout<<"Ta vacia";
else
{
aux2= aux-> getnum();
delete aux;
*inicio=aux2;
}
}
char menu()
{
char opc;
clrscr();
gotoxy(30,3);
cout<<"MENU";
gotoxy(28,7);
cout<<"1)Meter";
gotoxy(28,9);
cout<<"2)sacar";
gotoxy(28,11);
cout<<"3)Salir";
do
{
opc=getch();
}while(!strchr("123",opc));
return opc;
}
main()
{
cliente*cima;
cima=NULL;
char opc;
do
{
opc=menu();
switch(opc)
{
case'1':meter(&cima);
break;
case'2': sacar(&cima);
}
}while (opc!='3');
}
Cualquier ayuda es bien recibida :)
ProfesorX:
Antes que nada, te recomiendo que indentes tu codigo y utilices [ code ][ /code ] (sin espacio entre los corchetes) al postear, eso hace mas clara la lectura.
Queda un error, pero en esa parte no se que es lo que quieres hacer, asi que no lo he corregido, necesitaras estudiar muuuuuucho mas, pues se nota que te hace falta practica, he dejado comentarios para que te des cuenta de cuales fueron tus errores :P
--- Código: Text --- #include <stdio.h>#include <stdlib.h>#include <iostream> // necesario para utilizar cout using namespace std; // necesario para utilizar cout class cliente{private: char num[30]; cliente * sig;public: char * cliente:: getnum() { return num; } void cliente:: clien() { gets(num); } void cliente:: direccion(cliente * siguiente) { sig=siguiente; } cliente* cliente:: sigue() { return sig; }}; // Olvidate poner un punto y coma aquivoid insertar_antes(cliente **inicio){ cliente *aux, * aux2; aux2= * inicio; aux= new cliente; aux->clien(); aux->direccion(aux2); * inicio= aux;}void creacion(cliente** inicio){ cliente *aux; aux=new cliente; aux-> clien(); aux->direccion(NULL); *inicio= aux;}void meter(cliente** inicio){ cliente *aux; // en esta definicion pusiste clien,y es cliente aux= *inicio; if (aux==NULL) creacion(&aux); else insertar_antes(&aux); *inicio=aux;}void sacar(cliente** inicio){ cliente*aux; cliente *aux2; aux=*inicio; if (aux==NULL) cout<<"Ta vacia"; else { aux2= aux-> getnum(); // en esta parte no se que quieres hacer delete aux; *inicio=aux2; }}char menu(){ char opc; clrscr(); gotoxy(30,3); cout<<"MENU"; gotoxy(28,7); cout<<"1)Meter"; gotoxy(28,9); cout<<"2)sacar"; gotoxy(28,11); cout<<"3)Salir"; do { opc=getch(); } while (!strchr("123",opc)); return opc;}main(){ cliente*cima; cima=NULL; char opc; do { opc=menu(); switch (opc) { case'1': meter(&cima); break; case'2': sacar(&cima); } } while (opc!='3');}
Saludos :)
VeronicaNF:
ProfesorX, puedo preguntarle algo?
¿Despues de finalizar las clases siempre va punto y coma?
¿si no pongo "using namespace std;" cuando utilizo conio, el programa no funcionara? ya que nunca utilizaba eso y si funcionaba, si utilizo las librerias aunque cuando publique el programa no las agrege :D
en esta parte del codigo me equiboque al teclearlo jeje
--- Código: Text --- void sacar(cliente** inicio){ cliente*aux; cliente *aux2; aux=*inicio; if (aux==NULL) cout<<"Ta vacia"; else { aux2= aux-> sigue(); // me equiboque era "sigue" en lugar de getnum, disculpa aux->getnum(); delete aux; *inicio=aux2; }}
muchas gracias por la ayuda :rolleyes:
ProfesorX:
--- Citar ---¿Despues de finalizar las clases siempre va punto y coma?
--- Fin de la cita ---
Asi es.
--- Citar ---¿si no pongo "using namespace std;" cuando utilizo conio, el programa no funcionara? ya que nunca utilizaba eso y si funcionaba, si utilizo las librerias aunque cuando publique el programa no las agrege
--- Fin de la cita ---
el "using namespace std;" no es para utilizar conio, es para la utilizacion de cout, cin, y similares. En compiladores antiguos de C++ no era necesario, pero en compiladores mas nuevos (como el que yo utilizo), si es necesario, puesto que esas funciones estan definidas en namespaces, el uso de namespaces es para evitar ambigüedades, o sea, que tu puedes tener dos funciones que se llamen igual, pero en namespaces diferentes, en ese caso, antepones el nombre del namespace a la funcion, y asi evitas la ambiguedad. o sea, que si no utilizas namespaces, tendrias que escribir:
--- Código: Text --- std::cout << "Hola Mundo\n";
El tema de namespaces es muy amplio, si tienes mas dudas, busca acerca de namespaces, para que tengas mas informacion/ejemplos.
Saludos :)
VeronicaNF:
Muchas gracias por la ayuda ProfesorX
hasta luego
bye :hola:
Navegación
Ir a la versión completa