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