Sie sind auf Seite 1von 8

colas

PILAS Y COLAS

NOTA: No se uso la definición exacta de pilas o colas, se usaron vectores para resolver los enunciados,
por tanto, el ultimo no se resolvió, ya que la solución seria la misma
Se tienen dos pilas que contienen números enteros; la primera ordenada ascendentemente
desde el tope hacia el fondo, y la segunda ordenada descendentemente desde el tope hacia
el fondo. Elabore un algoritmo que fusione ambas pilas en una tercera ordenada
descendentemente desde el tope hacia el fondo.
FORMATO

Declarar entero Max(Declarar entero X[10],Declarar entero *m,Declarar entero *n){


Declarar entero a,b;
a= X[0];
Para (Declarar entero c=0;c<10;c++){
si (a<X[c]){a=X[c];b=c;}
}
*m=a;
*n=b;
}
Funcion Principal()
{
Declarar entero pila1[10];Declarar entero pila2[10];Declarar entero pilaOrdenada[20];
Para (Declarar entero a=0;a<10;a++){
pila1[a]=a+1;
}
Para (Declarar entero b=0;b<10;b++){
pila2[b]=10-b;
}
Mostrar Variable << "Pila 1\tPila 2" <<salto de linea;
Para(Declarar entero a=0;a<10;a++){Mostrar Variable << pila1[a] << "\t" << pila2[a] << salto de linea;}
Mostrar Variable << "\nOrdenanhacer pilas..." << salto de linea;
Declarar entero max,p,x,y,p2;
Para (Declarar entero z=10;z>0;z--){
Max(pila1,&max,&p);
x=max;
p2=p;
pila1[p2]=0;
Mostrar Variable << "Valor maximo en pila 1 = " << x << " Posicion = " << p2 << salto de linea;
Max(pila2,&max,&p);
y=max;
pila2[p]=0;
Mostrar Variable << "Valor maximo en pila 2 = " << y << " Posicion = " << p << salto de linea;
si(x>y){
pilaOrdenada[z+z-1]=x;
pilaOrdenada[z+z-2]=y;
}
si no {
pilaOrdenada[z+z-1]=y;
pilaOrdenada[z+z-2]=x;
}
}
Mostrar Variable << "\nPilas Ordenadas:" << salto de linea;
Para(Declarar entero w=19;w>=0;w--){Mostrar Variable << " " << pilaOrdenada[w];}
devolver 0;
}
CODIGO

#include <iostream>
using namespace std;
int Max(int X[10],int *m,int *n){
int a,b;
a= X[0];
for (int c=0;c<10;c++){
if (a<X[c]){a=X[c];b=c;}
}
*m=a;
*n=b;
}
int main()
{
int pila1[10];int pila2[10];int pilaOrdenada[20];

for (int a=0;a<10;a++){


pila1[a]=a+1;
}
for (int b=0;b<10;b++){
pila2[b]=10-b;
}
cout << "Pila 1\tPila 2" <<endl;
for(int a=0;a<10;a++){cout << pila1[a] << "\t" << pila2[a] << endl;}
cout << "\nOrdenando pilas..." << endl;
int max,p,x,y,p2;
for (int z=10;z>0;z--){
Max(pila1,&max,&p);
x=max;
p2=p;
pila1[p2]=0;
cout << "Valor maximo en pila 1 = " << x << " Posicion = " << p2 << endl;
Max(pila2,&max,&p);
y=max;
pila2[p]=0;
cout << "Valor maximo en pila 2 = " << y << " Posicion = " << p << endl;
if(x>y){
pilaOrdenada[z+z-1]=x;
pilaOrdenada[z+z-2]=y;
}
else {
pilaOrdenada[z+z-1]=y;
pilaOrdenada[z+z-2]=x;
}
}
cout << "\nPilas Ordenadas:" << endl;
for(int w=19;w>=0;w--){cout << " " << pilaOrdenada[w];}
return 0;
}
Construir un algoritmo que permita dada una pila con valores numéricos, determinar cual es
el mayor y menor, utilizando una pila auxiliar.
FORMATO

Funcion Principal(void){
Declarar entero pila1[10];
Para(Declarar entero z=0;z<10;z++){pila1[z]=z*z-(6*z);}
Declarar entero a=0;Declarar entero b=0;
a= pila1[0];
Para (Declarar entero c=0;c<10;c++){
si (a<pila1[c]){a=pila1[c];b=c;}
}
Declarar entero a2=0;Declarar entero b2=0;
a2= pila1[0];
Para (Declarar entero c2=0;c2<10;c2++){
si (a2>pila1[c2]){a2=pila1[c2];b2=c2;}
}
Mostrar Variable << " Pila 1: "<< salto de linea;
Para(Declarar entero z=0;z<10;z++){Mostrar Variable << " " << pila1[z];}
Mostrar Variable << "\nMaximo = " << a << " En la posicion = " << b << salto de linea;
Mostrar Variable << "\nMinimo = " << a2 << " En la posicion = " << b2 << salto de linea;
}
CODIGO
#include <iostream>
using namespace std;
int main(void){
int pila1[10];
for(int z=0;z<10;z++){pila1[z]=z*z-(6*z);}
int a=0;int b=0;
a= pila1[0];

for (int c=0;c<10;c++){


if (a<pila1[c]){a=pila1[c];b=c;}
}
int a2=0;int b2=0;
a2= pila1[0];

for (int c2=0;c2<10;c2++){


if (a2>pila1[c2]){a2=pila1[c2];b2=c2;}
}
cout << " Pila 1: "<< endl;
for(int z=0;z<10;z++){cout << " " << pila1[z];}

cout << "\nMaximo = " << a << " En la posicion = " << b << endl;
cout << "\nMinimo = " << a2 << " En la posicion = " << b2 << endl;

}
Leer una frase y luego invierta el orden de las palabras en la frase. Por Ejemplo: “una
imagen vale por mil palabras” debe convertirse en “palabras mil por vale imagen una”.
FORMATO
Funcion Principal(void){
Mostrar Variable << "Declarar enteroroduce la frase:\n";
string f;
getline(Leer Variable,f);
Mostrar Variable << f;
Declarar entero L=-1;
Declarar entero a=-1;
hacer{
L++;
a++;
}mientras(f[a] != NULL);
Declarar entero pal=1;
Para(Declarar entero z=0;z<L;z++){
si(f[z]==' '){
pal++;}
}
Mostrar Variable << "\nEncontradas " << pal << " palabras, Longitud de cadena: " << L << "
Invirtienhacer...\n";
string aux[L];Declarar entero y=L;Declarar entero Lt=L-1;Declarar entero lpal=0;
Para(Declarar entero w=0;w<=pal-1;w++){
hacer{
y--;
}mientras(f[y]!=' '&&y>=0);
lpal=Lt-y;
Para(Declarar entero r=y+1;r<=Lt;r++){
aux[r]=f[r];
Mostrar Variable << aux[r];
}
Mostrar Variable << " ";
Lt=y;
}
}
CODIGO

#include <iostream>
#include <string>

using namespace std;

int main(void){

cout << "Introduce la frase:\n";


string f;

getline(cin,f);
cout << f;
int L=-1;
int a=-1;
do{
L++;
a++;
}while(f[a] != NULL);

int pal=1;
for(int z=0;z<L;z++){
if(f[z]==' '){
pal++;}
}
cout << "\nEncontradas " << pal << " palabras, Longitud de cadena: " << L << " Invirtiendo...\n";

string aux[L];int y=L;int Lt=L-1;int lpal=0;


for(int w=0;w<=pal-1;w++){
do{
y--;
}while(f[y]!=' '&&y>=0);
lpal=Lt-y;
for(int r=y+1;r<=Lt;r++){
aux[r]=f[r];
cout << aux[r];
}
cout << " ";
Lt=y;
}

}
Escribir un algoritmo que invierta el contenido de una cola. Puede utilizar estructuras
auxiliares.
FORMATO
Funcion Principal(void){
Declarar entero cola1[20];Declarar entero aux[20];
Declarar entero z=0;
Para (z=0;z<20;z++){cola1[z]=z*(z-6);si(z==0){Mostrar Variable << "Cola:" << salto de linea;}Mostrar Variable
<< cola1[z] << salto de linea;}
Para (Declarar entero x=0;x<20;x++){
aux[x]=cola1[19-x];
}
Para (Declarar entero x=0;x<20;x++){
cola1[x]=aux[x];
si(x==0){Mostrar Variable << "Cola Invertida:" << salto de linea;}
Mostrar Variable << cola1[x] << salto de linea;
}
}

CODIGO

#include <iostream>
#include <string>
using namespace std;
int main(void){

int cola1[20];int aux[20];


int z=0;
for (z=0;z<20;z++){cola1[z]=z*(z-6);if(z==0){cout << "Cola:" << endl;}cout << cola1[z] << endl;}

for (int x=0;x<20;x++){


aux[x]=cola1[19-x];

}
for (int x=0;x<20;x++){
cola1[x]=aux[x];
if(x==0){cout << "Cola Invertida:" << endl;}
cout << cola1[x] << endl;
}
}
Generar un algoritmo que devuelva el máximo y el mínimo de una cola de números enteros,
en un único recorrido.
FORMATO
Funcion Principal(void){
Declarar entero cola1[20];
Declarar entero z=0;
Para (z=0;z<20;z++){cola1[z]=z*(z-6);si(z==0){Mostrar Variable << "Cola:" << salto de linea;}Mostrar Variable
<< cola1[z] << salto de linea;}
Declarar entero min=cola1[0];
Declarar entero max=cola1[0];
Para (Declarar entero x=0;x<20;x++){
si(min>cola1[x]){min=cola1[x];}
si(max<cola1[x]){max=cola1[x];}
}
si(min==max){Mostrar Variable << "Todos son iguales" << ", Valor hallado = " << min << salto de linea;}
si no{Mostrar Variable<< "Minimo = " << min << "\nMaximo = " << max <<salto de linea;}
}

CODIGO
#include <iostream>
#include <string>

using namespace std;

int main(void){

int cola1[20];
int z=0;

for (z=0;z<20;z++){cola1[z]=z*(z-6);if(z==0){cout << "Cola:" << endl;}cout << cola1[z] << endl;}
int min=cola1[0];
int max=cola1[0];
for (int x=0;x<20;x++){
if(min>cola1[x]){min=cola1[x];}
if(max<cola1[x]){max=cola1[x];}
}
if(min==max){cout << "Todos son iguales" << ", Valor hallado = " << min << endl;}
else{cout<< "Minimo = " << min << "\nMaximo = " << max <<endl;}
}

Das könnte Ihnen auch gefallen