
28/10/2004, 20:28
|
| | Fecha de Ingreso: marzo-2002 Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 23 años Puntos: 0 | |
Hola, revisando un poco el codigo he encontrado un error, y lo que me faltaba era borrar la lista entera, aca dejo el codigo completo funcionando, que en teoria deberia andar bien, pero surgio otro problema ahora. El problema es que cuando te va a mostrar los datos de la lista, te muestra solamente 2 y los demas no te los muestra, no se a que se debe pero lo dejo como una incongnita, un reto a que si lo descubrimos, seria bueno para tener una solucion a un problema que quiza sea comun a todos nosotros los programadores.
Buena suerte un abrazo
Código:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
struct cliente
{
int cod_c, cod, tpag;
char nom[30];
float imp;
};
struct Nodo
{
cliente info;
Nodo *prox;
};
void InsertVec(cliente vec[10]);
void InsertOrd(Nodo *&raiz, cliente x);
void PuntoA(Nodo *&raiz, cliente vec[10], cliente &x);
void borrar(Nodo *&raiz);
void main()
{
Nodo *raiz;
raiz = NULL;
cliente x;
cliente vec[10];
InsertVec(vec);
PuntoA(raiz, vec, x);
borrar(raiz);
}
void InsertVec(cliente vec[10])
{
char nom2[30];
for(int i=0; i<10; i++)
{
cout << "\nIngresar Codigo de cliente (Valor entre 0 y 99): ";
cin >> vec[i].cod_c;
cout << "\nIngresar Nombre del cliente: ";
strcpy(vec[i].nom, gets(nom2));
cout << "\nCodigo del negocio donde se efectuo la compra (Valor entre 1 y 4): ";
cin >> vec[i].cod;
cout << "\nImporte de la compra: ";
cin >> vec[i].imp;
cout << "\nIngrese tipo de pago (Valor entre 0 y 2): ";
cin >> vec[i].tpag;
}
cout << "\nPresione una tecla para continuar...";
getch();
}
void InsertOrd(Nodo *&raiz, cliente x)
{
Nodo *nuevo;
nuevo = new Nodo;
//Asiganacion de valores para el puntero
nuevo->info.cod_c = x.cod_c;
strcpy(nuevo->info.nom, x.nom);
nuevo->info.cod = x.cod;
nuevo->info.imp = x.imp;
nuevo->info.tpag = x.tpag;
//Creacion del nodo
//Insercion de elementos en forma ordenada
if(raiz==NULL)
{
raiz = nuevo;
}
else
{
Nodo *p,*q;
q=raiz;
for(p=raiz; p!=NULL&&p->info.cod_c>x.cod_c; p = p->prox)
{
q=p;
if(p==q)
{
nuevo->prox = raiz;
raiz = nuevo;
}
else
{
q->prox = nuevo;
nuevo->prox = p;
}
}
}
}
void PuntoA(Nodo *&raiz, cliente vec[10], cliente &x)
{
for(int i=0; i<10; i++)
{
x.cod_c = vec[i].cod_c;
strcpy(x.nom, vec[i].nom);
x.cod = vec[i].cod;
x.imp = vec[i].imp;
x.tpag = vec[i].tpag;
if(vec[i].imp>300)
{
InsertOrd(raiz, x);
}
}
cout << "Presione una tecla para mostrar los elementos ordenados\n";
getch();
Nodo *p;
for(p=raiz; p!=NULL; p=p->prox)
{
cout << p->info.nom;
}
getch();
}
void borrar(Nodo *&raiz)
{
while(raiz!=NULL)
{
Nodo *r=raiz;
raiz = r->prox;
delete r;
}
}
__________________ Nada es imposible, con un poco de esfuerzo se logran las cosas.- |