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