Título: Ayuda a corregir programa en C++ Listas enlazadas Publicado por: orbel2 en 25 Abril 2017, 19:32 pm Buenos Días, todos los demas puntos me funcionana correctamente pero para sacar los pares e impares no me funciona lo estaba intentando solo con los pares y no me da. Adjunto el programa. estoy trabajando en Dev c++
#include <iostream> #include <malloc.h> using namespace std; struct lista { int dato; struct lista *liga; }; struct lista *nuevo, *x, *null, *ant, *cab; int i, n, valor, sw=0,par=0, num,pos=0,neg=0; void crear_lista() { i=1; cout<<"ingrese los nodos a crear"<<endl; cin>>n; nuevo=(struct lista *)malloc(sizeof(struct lista)); cab=nuevo; cout<<"ingrese un valor"<<endl; cin>>valor; nuevo->dato=valor; nuevo->liga=NULL; ant=nuevo; while(i<n) { i=i+1; nuevo=(struct lista *)malloc(sizeof(struct lista)); cout<<"ingrese un nuevo valor"<<endl; cin>>valor; nuevo->dato=valor; ant->liga=nuevo; nuevo->liga=NULL; ant=nuevo; } } void mostrar() { x=cab; while(x!=NULL) { cout<<x->dato; x=x->liga; } } void buscar() { sw=0; x=cab; cout<<"ingrese el dato a buscar"<<endl; cin>>valor; while(x!=NULL) { if(x->dato == valor) sw=1; } if(sw==1) cout<<"el dato se enncuentra en la lista"<<endl; else cout<<"el dato no se enncuentra en la lista"<<endl; } void borrar() { x=cab; cout<<"Ingrese el dato a borrar"<<endl; cin>>valor; while(x!=NULL) { if(x->dato==valor) { if(x==cab) { cab=x->liga; x=NULL; free(x); } else { ant->liga=x->liga; free(x); x=ant->liga; } } else { ant=x; x=x->liga; } } } void pos_neg() { int pos=0; int neg=0; x=cab; cout<<"ingrese el numero"<<endl; cin>>valor; while(x!=NULL) { if(x->dato > valor){ pos=pos+1; ant=x; x=x->liga; }else{ neg=neg+1; ant=x; x=x->liga; } } cout<<"los numeros positivos son:"<<pos<<endl; cout<<"los numeros negativos son:"<<neg<<endl; } void pares() { int par=0; x=cab; while(x!=NULL); { if(x->dato % 2 == 0) par=par+1; } cout<<"los numeros pares son:"<<par<<endl; ///cout<<x->dato; } int main() { int op, nuevo=NULL, ant=NULL, x=NULL, cab=NULL,par=0; cout<<"[1.] Crear la Lista"<<endl; cout<<"[2.] Buscar un Dato"<<endl; cout<<"[3.] Borrar un dato"<<endl; cout<<"[4.] Mostrar los datos"<<endl; cout<<"[5.] Pares"<<endl; cout<<"[6.] Positivos y Negativos"<<endl; cout<<"[7.] Salir"<<endl; do { cout<<"Digite una opcion"<<endl; cin>>op; switch(op) { case 1:crear_lista(); break; case 2:buscar(); break; case 3:borrar(); break; case 4:mostrar(); break; case 5:pares(); break; case 6:pos_neg(); break; } } while(op!=7); system("PAUSE()"); } Título: Re: Ayuda a corregir programa en C++ Listas enlazadas Publicado por: MAFUS en 26 Abril 2017, 12:08 pm En algunas funciones te olvidas de recorrer la lista y en el main tienes un gran problema en la línea de definición de variables.
|