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