SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: arielrro en Martes 19 de Agosto de 2003, 01:08
-
Hola a todos, por favor quien puede ayudarme en c++:
Tengo 2 Colas estáticas las cuales una contiene elementos pares y otra impares y me piden colocar los elementos de las 2 colas en 1 tercera, pero de forma descendente.
Te muestro el ejemplo hasta donde llegué
#include<iostream.h>
#include<conio.h>
#define MAX 5
#include<stdlib.h>
struct numeros
{
int num;
};
struct cola
{
numeros vector[MAX];
numeros *psacar;
numeros *pponer;
};
void inicializarcola(cola* aux) //defino puntero aux
{
aux->psacar=aux->pponer=&aux->vector[0]; //&aux->vector[0]=aux->vector
}
////////////////////////////////////////////
int colavacia(cola aux)
{
return (aux.pponer==aux.psacar);
}
////////////////////////////////////////////
int colallena(cola *aux) //paso por puntero
{
if (aux->pponer+1==aux->psacar) // con flecha
return 1;
else
if (aux->pponer+1==aux->vector+MAX&&aux->psacar==aux->vector)
return 1;
return 0;
}
////////////////////////////////////////////
numeros *primero(cola aux)
{
return (aux.psacar);
}
////////////////////////////////////////////
void acolar(cola *aux,numeros dato)
{
*(aux->pponer)=dato;//contenido de persona
(aux->pponer)++;
if(aux->pponer==aux->vector+MAX)
aux->pponer=aux->vector;
}
////////////////////////////////////////////
void desacolar(cola *aux)
{
(aux->psacar)++;
if (aux->psacar==aux->vector+MAX)
aux->psacar=aux->vector;
}
////////////////////////////////////////////
int main (void)
{ clrscr();
cola z;
cola x;
cola p;
numeros dato,aux;
inicializarcola(&z);
inicializarcola(&x);
inicializarcola(&p);
cout<<"Ingrese N£meros: ";
cin>>dato.num;
while((dato.num)&&(!colallena(&z)&&(!colallena(&x)))) /////
{
if((dato.num%2)==0)
acolar(&z,dato);
if((dato.num%2)!=0)
acolar(&x,dato);
cout<<"Ingrese N£meros: ";
cin>>dato.num;
}
while(!colavacia(z))
{
dato=*primero(z);
cout<<endl<<"N£meros Par: "<<dato.num;
desacolar(&z);
//acolar(&p,dato);
}
while(!colavacia(x))
{
dato=*primero(x);
cout<<endl<<"N£meros Impar: "<<dato.num;
desacolar(&x);
acolar(&p,dato);
}
cout<<endl;
while(!colavacia(p))
{
dato=*primero(p);
cout<<endl<<"Descendente Son:"<<dato.num;
desacolar(&p);
}
cout<<endl;
if(colavacia(z)&&colavacia(x))
cout<<endl<<"Vaci‚ Ambas Colas"<<endl;
return 0;
}
Bueno esto realiza todo, pero no se como pasar los datos de ambas colas en el ejemplo de arriba paso solamente los de la cola impar.
Y por favor alguna idea de el orden descendente .
Gracias :good:
-
Podrias ser mas especifico con el problema que tienes?,
Teoricamente lo unica que debes hacer es crear un tercer array y mediante un ciclo realizar la insercion de las otras dos colas de manera alterna.
Juank
-
Juank: Lo que no puedo hacer es un ordenamiento descendente de ambas colas en una tercera. Lo cual tendría que utilizar una aux. decis.
no tendrías un ejemplo. Ya que soy nuevo en esto . Desde ya muchas gracias por tu interes Saludos Ariel:suerte:
-
tengo uno, o mejor varios, pero son estructuras dinamicas, por lño cual te pegarias una enredada de aqui el cielo....
en todo caso te adjunto esto jjajabuena suerte.
-
Hi:
He estado revisando tu problema y te voy a hacer algun comentario:
1.- Creo que a la ultima cola le debes dar un tratamiento diferente a las dos primeras en cuanto a la cantidad de elementos. En tu caso van a tener la misma cantidad de elementos las tres colas y recuerda que en la ultima vas a tener todos los #, pares e impares.
2.-En la medida que colocas un numero (par o impar) puedes irlo colocando en la ultima cola y haces una comparacion con el cada ves que entres otro (para ordenarlos de forma descendente como quieres)
3.-Creo que debes revisar algunos errorer que tiene el codigo que publicaste: xEj cuando entras un numero par de ultimo, no aparece en la cola de #s pares
El documento que te brinda juank te puede ayudar bastante, no obstante yo voy a tratar de echarte otra mano
Best Regards
cyber