Tarea6-Algoritmos Vectores

16
Trabajo de Curso de Algoritmos Joaquin Cuadra I CICLO 1. Hacer un programa que realice la Serie Fibonacci. #include<iostream> using namespace std; // La ley de recurrencia es: an = an-1 + an-2. Es decir, cada término de la sucesión // se obtiene sumando los dos anteriores. Para empezar a construirla necesitamos, por // tanto, dos números de partida, a1 y a2. // De esta forma, a3 sería a2 + a1 ; a4 sería a3 + a2 // y así sucesivamente int valida (int z) { while (z <= 0 ) { std::cout << "Error, Entrada Invalida " << std::endl; std::cout << "Ingrese Un Valor Mayor a CERO: "; cin>>z; } return z ; } int main() { int n, c, primero = 0, segundo = 1, sgte; cout << "Ingrese el numero de Terminos de la serie de Fibonacci " << endl; cin >> n; n=valida(n); cout << "Los " << n << " Termino(s) de la Seria de Fibonnacci es (son) :- " << endl;

description

Curso de C++ Ejemplos

Transcript of Tarea6-Algoritmos Vectores

Page 1: Tarea6-Algoritmos Vectores

Trabajo de Curso de Algoritmos Joaquin Cuadra I CICLO

1. Hacer un programa que realice la Serie Fibonacci.

#include<iostream> using namespace std; // La ley de recurrencia es: an = an-1 + an-2. Es decir, cada término de la sucesión // se obtiene sumando los dos anteriores. Para empezar a construirla necesitamos, por // tanto, dos números de partida, a1 y a2. // De esta forma, a3 sería a2 + a1 ; a4 sería a3 + a2 // y así sucesivamente int valida (int z) { while (z <= 0 ) { std::cout << "Error, Entrada Invalida " << std::endl; std::cout << "Ingrese Un Valor Mayor a CERO: "; cin>>z; } return z ; } int main() { int n, c, primero = 0, segundo = 1, sgte; cout << "Ingrese el numero de Terminos de la serie de Fibonacci " << endl; cin >> n; n=valida(n); cout << "Los " << n << " Termino(s) de la Seria de Fibonnacci es (son) :- " << endl;

Page 2: Tarea6-Algoritmos Vectores

for ( c = 0 ; c < n ; c++ ) { if ( c <= 1 ) sgte = c; else { sgte = primero + segundo; primero = segundo; segundo = sgte; } cout << sgte << endl; } return 0; }

2. Hacer un programa que realice el Máximo Común Divisor.

#include <iostream>

using namespace std;

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

int main()

{

int a,b,r;

cout<<"Ingrese el Un numero : ";

Page 3: Tarea6-Algoritmos Vectores

cin>>a;

a=valida(a);

cout<<"Ingrese otro Un numero : ";

cin>>b;

b=valida(b);

r=a%b;

while(r>0)

{

a=b;

b=r;

r=a%b;

}

cout<<"Maximo comnun Divisor (MCD) de "<< a<< " " << b << "es " << b <<

endl;

}

3. Hacer un programa que realice las Torres de Hanoi.

#include <iostream>

using namespace std;

// Mover todos los discos desde la aguja A a la aguja C

// 1. Sólo se puede mover un disco a la vez de una aguja a otra.

// 2. No se puede colocar un disco encima de otro de menor tamaño.

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

Page 4: Tarea6-Algoritmos Vectores

void torredehanoi(int num,char A,char C,char B)

{

if(num==1)

{

cout<<"\n\t Mueva el bloque "<<num<<" desde "<<A<<" hasta

"<<C<<endl;

}

else

{

torredehanoi(num-1,A,B,C);

cout<<"\n\t Mueva el bloque "<<num<<" desde "<<A<<" hasta "<<C<<endl;

torredehanoi(num-1,B,C,A);

}

}

int main()

{

int n;

char A,B,C;

cout<<"\n\t Los Agujas son A B C\n";

cout<<"\n\t Numero de discos: ";

cin>>n;

n=valida(n);

torredehanoi(n,'A','C','B');

}

4. Elaborar un programa dado las notas de 35 alumnos, se debe reportar la nota mas alta, la

nota más baja y el promedio de notas ingresadas.

#include <iostream>

using namespace std;

// Se Hizo una pequeña modificación para se se ingrese mejor el número de

alumnos

// a ingresar su nota la otra es definir una variable #define alumnos =35

void onumeros(int arreglo[], int lon){

int Temp;

for(int i=0;i<lon;i++)

Page 5: Tarea6-Algoritmos Vectores

for(int j=0;j<lon-1;j++)

if(arreglo[j]<arreglo[j+1]){

Temp=arreglo[j];

arreglo[j]=arreglo[j+1];

arreglo[j+1]=Temp;}

for(int i=0;i<lon;i++)

cout<<"*** "<<arreglo[i]<<endl;

}

int valida (int z)

{

while (z > 20 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Menor a 20: ";

cin>>z;

}

return z ;

}

int main(){

int lon,n,suma =0 ;

cout<<"Cuantos Alumnos se les va a ingresar su Nota ? : ";

cin>>lon;

int arr[lon];

for(int i=0;i<lon;i++){

cout<<"Ingresa el numero "<<i+1<<": ";

cin>>n;

n=valida(n);

arr[i]=n;

suma += arr[i];

}

cout<<endl<<"Notas ordenados: "<<endl;

onumeros(arr,lon);

cout<<endl<<"El promedio de las Notas son : "<< suma/lon << endl;

}

Page 6: Tarea6-Algoritmos Vectores

5. Elaborar un programa para que se ingresen los sgtes. valores del arreglo mostrado, sume

el valor en la posición 0 con el valor en la posición 3 y luego multiplicar por el valor en la

posición 5

#include <iostream>

#include <vector>

using namespace std;

int valida (double z)

{

while (z < 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a 0: ";

cin>>z;

}

return z ;

}

int main()

{

double n;

vector<double> vec; // Creamos el Vector

cout << " Inicializamos el vector vacio, tamaño : = " << vec.size() <<

endl;

for(double i = 0; i < 5; i++){ // Ponemos la cantidad de elementos al

Vector

Page 7: Tarea6-Algoritmos Vectores

cout<<"Ingresa el numero "<<i+1<<": ";

cin>>n;

n=valida(n);

vec.push_back(n); // Lo ponemos al Final

}

for(double i = 0; i < 5; i++){

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

}

vector<double>::iterator q = (vec.begin());

vector<double>::iterator w = (vec.begin()+2);

vector<double>::iterator e = (vec.end()-1);

cout << "Es la cero pocision = " << *q << endl;

cout << "Es la tercera pocision = " << *w << endl;

cout << "Es la ultimo pocision = " << *e << endl;

cout << "El Valor de la Operacion es " << (*q+*w) * (*e) << endl;

return 0;

}

6. Leer las edades de n personas y reportar: a. Cuantas edades son menores a 10. b. Cuantas edades son mayores iguales a 10 y menores a 20. c. Cuantas edades son mayores iguales a 20 y menores a 30. d. Cuantas edades son mayores iguales a 30 y menores a 40. e. Cuantas edades son mayores iguales a 40 y menores a 50.

#include <iostream>

using namespace std;

void onumeros(int arreglo[], int lon){

int cm10=0,cm19=0,cm20=0,cm30=0,cm40=0;

for(int i=0;i<lon;i++)

{

cout<<"*** "<<arreglo[i]<<endl;

Page 8: Tarea6-Algoritmos Vectores

if(arreglo[i]<10) {cm10 = cm10 +1;}

else if((arreglo[i]>=10) && (arreglo[i]<20) ) {cm19 = cm19 +1;}

else if((arreglo[i]>=20) && (arreglo[i]<30) ) {cm20 = cm20 +1;}

else if((arreglo[i]>=30) && (arreglo[i]<40) ) {cm30 = cm30 +1;}

else {cm40 = cm40 +1;}

}

cout<<"Numero de Personas con Edad Menor que 10 "<<cm10<<"\n";

cout<<"Numero de Personas con Edad entre 10 y 20 "<<cm19<<"\n";

cout<<"Numero de Personas con Edad entre 20 y 30 "<<cm20<<"\n";

cout<<"Numero de Personas con Edad entre 30 y 40 "<<cm30<<"\n";

cout<<"Numero de Personas con Edad entre 40 y 50 "<<cm40<<"\n";

}

int valida (int z)

{

while (z >= 50 )

{

std::cout << "Error, Edad Invalida " << std::endl;

std::cout << "Ingrese Un Valor Menor a 50: ";

cin>>z;

}

return z ;

}

int main(){

int lon,n;

cout<<"La cantidad de edades a ingresar : ";

cin>>lon;

int arr[lon];

for(int i=0;i<lon;i++){

cout<<"Ingresa La Edad "<<i+1<<": ";

cin>>n;

n=valida(n);

arr[i]=n;

}

onumeros(arr,lon);

}

7. Ingresar n pesos (kg.) de personas a un arreglo, insertar un nuevo peso de una persona en

la posición 4.

Page 9: Tarea6-Algoritmos Vectores

#include <iostream>

#include <vector>

using namespace std;

int valida02 (int z)

{

while (z < 5 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a 4: ";

cin>>z;

}

return z ;

}

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

int main()

{

double n,nnum;

vector<double> vec; // Creamos el Vector

std::vector<double>::iterator it;

int lon;

cout<<"Cuantos Veces vas a ingresas los kilos ? : ";

cin>>lon;

lon=valida02(lon);

int arr[lon];

for(int i=0;i<lon;i++)

{

cout<<"Ingresa el Valor en Kilos "<<i+1<<": ";

cin>>n;

n=valida(n);

vec.push_back(n); // Lo ponemos al Final

}

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl;

// Mostramos los Elementos del Vector

}

cout << "Ingrese el nuevo valor a ser ingresado en la 4ta Posicion " ;

cin >> nnum;

it = vec.begin()+3;

it = vec.insert ( it , nnum );

for(double i = 0; i < lon+1; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl;

// Mostramos los Elementos del Vector

}

return 0;

}

Page 10: Tarea6-Algoritmos Vectores

8. Añadir dos elementos al final del arreglo, modificando el algoritmo de añadir un elemento al

final. 6. Dado un arreglo de tamaño 100, y de n= 10 elementos, eliminar el elemento de la

posición 6 e insertar el valor de 50 en una posición cualquiera.

// Añadir dos elementos al final del arreglo, modificando el algoritmo de

// añadir un elemento al final.

#include <iostream>

#include <vector>

using namespace std;

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

int main()

{

double n,nnum;

vector<double> vec; // Creamos el Vector

std::vector<double>::iterator it;

int lon;

cout<<"Cuantos Veces vas a ingresas los kilos ? : ";

cin>>lon;

for(int i=0;i<lon;i++)

{

cout<<"Ingresa el Valor en Kilos "<<i+1<<": ";

cin>>n;

n=valida(n);

vec.push_back(n); // Lo ponemos al Final

}

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

Page 11: Tarea6-Algoritmos Vectores

}

cout << "Ingrese el nuevo valor a ser ingresado al Final " ;

cin >> nnum;

vec.insert(vec.end(),nnum);

for(double i = 0; i < lon+1; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

}

return 0;

}

9. Dado un arreglo de n elementos, añadir un elemento al final y luego eliminar el segundo

elemento de todo el arreglo.

#include <iostream>

#include <vector>

using namespace std;

// 10. Dado un arreglo de n elementos, buscar un elemento y solo si se encontró, indicar

la posición encontrada y añadir el valor encontrado al final del arreglo, y mostrar.

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

int main()

{

Page 12: Tarea6-Algoritmos Vectores

double n,nnum;

vector<double> vec; // Creamos el Vector

std::vector<double>::iterator it;

int lon;

cout<<"Cuantos Elementos va a ingresar al Vector? : ";

cin>>lon;

for(int i=0;i<lon;i++)

{

cout<<"Ingresa el Valor para la posicion "<<i+1<<": ";

cin>>n;

n=valida(n);

vec.push_back(n); // Lo ponemos al Final

}

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

}

/// Dado un arreglo de n elementos, añadir un elemento al final y

cout << "Ingrese el nuevo valor a ser ingresado al Final " ;

cin >> nnum;

vec.insert(vec.end(),nnum);

for(double i = 0; i < lon+1; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

}

/// luego eliminar el segundo elemento de todo el arreglo

cout << "\n " ;

cout << "Eliminando el Segundo Elemento del Vector \n " ;

cout << " " ;

vec.erase(vec.begin()+1);

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl; //

Mostramos los Elementos del Vector

}

return 0;

}

Page 13: Tarea6-Algoritmos Vectores

10. Dado un arreglo de n elementos, buscar un elemento y solo si se encontró, indicar la

posición encontrada y añadir el valor encontrado al final del arreglo, y mostrar.

#include <iostream>

#include <vector>

using namespace std;

int valida (int z)

{

while (z <= 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor Mayor a CERO: ";

cin>>z;

}

return z ;

}

int main()

{

double n,nnum;

vector<double> vec; // Creamos el Vector

std::vector<double>::iterator it;

int lon;

cout<<"Cuantos Elementos va a ingresar al Vector? : ";

cin>>lon;

/// Dado un arreglo de n elementos,

for(int i=0;i<lon;i++)

{

cout<<"Ingresa el Valor para la posicion "<<i+1<<": ";

cin>>n;

Page 14: Tarea6-Algoritmos Vectores

n=valida(n);

vec.push_back(n); // Lo ponemos al Final

}

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl;

// Mostramos los Elementos del Vector

}

/// buscar un elemento y solo si se encontró, indicar la posición

encontrada y

/// añadir el valor encontrado al final del arreglo, y mostrar.

cout << "Ingrese elemento a Buscar en el Arreglo " ;

cin >> nnum;

for(int j=0;j<lon-1;j++)

if(vec[j] == nnum)

{

cout << "Se encontro el Valor en la Posicion " << j+1 <<

endl;

cout << "\n" << endl;

cout << "Se Movera el Elemento al Final \n "<< endl;

vec.erase(vec.begin()+j);

vec.insert(vec.end(),nnum);

}

for(double i = 0; i < lon; i++)

{

cout << "Valor del Vector [" << i << "] = " << vec[i] << endl;

// Mostramos los Elementos del Vector

}

return 0;

}

11. Crear un módulo de programa donde se ingrese como algunos de sus argumentos dos

Arreglos A y B, con n y m elementos respectivamente, y sumar los valores de las posiciones

impares de A con los valores de las posiciones pares de B.

Page 15: Tarea6-Algoritmos Vectores

#include <iostream> // std::cout

#include <algorithm> // std::sort

#include <vector> // std::vector

using namespace std;

int validapar (int z)

{

while (z % 2 != 0)

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese PAR: ";

cin>>z;

}

return z ;

}

int validaimpar (int z)

{

while (z % 2 == 0 )

{

std::cout << "Error, Entrada Invalida " << std::endl;

std::cout << "Ingrese Un Valor IMPAR: ";

cin>>z;

}

return z ;

}

int main()

{

double n;

int nom;

vector<int> vec; // Creamos el Vector para el Salario

vector<int> vec02; // Creamos el Vector los Nombres

for(int i = 0; i < 4; i++){ // Ponemos la cantidad de elementos al Vector

cout<<"Valor Numero PAR "<<i+1<<": ";

cin>>nom;

nom=validapar(nom);

vec02.push_back(nom); // Lo ponemos al Final

cout<<"Ingresa Numero IMPAR "<<i+1<<": ";

cin>>n;

n=validaimpar(n);

vec.push_back(n); // Lo ponemos al Final

}

cout << "***************************************\n";

cout << "********* SUMANDO MIEMBROS ***********\n";

cout << "***************************************\n";

for(double i = 0; i < 4; i++){

cout << "Valor del Registro [" << i << "] = " << vec02[i] << " + " << vec[i] <<

"=" << vec02[i]+vec[i] << endl; // Mostramos los Elementos del Vector

}

return 0;

}

Page 16: Tarea6-Algoritmos Vectores

12. Crear un módulo de programa donde se eliminen los elementos repetidos en un Arreglo de

n elementos.

13. Buscar un elemento en un arreglo de n elementos, utilizando búsqueda binaria

(previamente ordenado con el método de la burbuja y sin que exista elementos repetidos), y

eliminarlo.

14. Dada una matriz de n filas y m columnas, elaborar los módulos de programa para: indicar el

menor elemento y la(s) posición(es) en que se encuentra y para hacer rotar a la matriz 3 veces

(intercambiar filas y columnas).