Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/10/2004, 18:38
Znet
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 23 años
Puntos: 0
Ayuda Con Insercion De Listas (c++)

Hola gurus, ahora me ha surgido un problema a mi, les comento que tengo que hacer un programa, que guarda datos priemero en vectores, y despues discrimina, a los datos que tienen un monto mayor a 300 los selecciona, y despues los inserta en nodos, en una lista, que usa los punteros para para guardar la direccion de los siguientes.
A medida que inserta lo hace ordenadamente.
Estoy usando el compilador de Dev-C++
Y cuando tiene que hacer el trabajo en la memoria me tira un error, de que debo reiniciar el progrma porque se produjo un error.
Aqui les dejo el codigo, y me dicen en que me he equivocado.
Muchas gracias.

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 main()
{
 Nodo *raiz;
 raiz = NULL;
 cliente x;
 cliente vec[10];
 InsertVec(vec);
 PuntoA(raiz, vec, x);

}

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);
      }

   }
   getch();
}
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-