tarea6-algoritmos vectores
DESCRIPTION
Curso de C++ EjemplosTRANSCRIPT
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;
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 : ";
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 ;
}
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++)
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;
}
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
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;
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.
#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;
}
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
}
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()
{
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;
}
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;
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.
#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;
}
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).