Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/10/2004, 20:28
Znet
 
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.-