Computers">
Nothing Special   »   [go: up one dir, main page]

Taller 6

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 21

Verifica lo que sabes # 1

1. ¿Qué es un arreglo unidimensional?


R/ Es un tipo de dato estructurado que se forma por una colección finita y ordenada de datos del
mismo tipo. Con respecto a unidimensional, se dice que es un vector.

2. Del anterior vector, si se quisiera imprimir el número 5, ¿cómo se haría?


R/ Vector mencionado:

Para poder imprimir el contenido del vector que es 5, nos fijamos en su ubicación. En este caso es 4,
entonces pondríamos un “cout<< vector [4]<<endl;” por lo anteriormente dicho.

3. Si se quisiera leer un número digitado por el usuario y guardarlo en la posición 2 del vector
del ejemplo anterior, ¿qué número se reemplazaría en su contenido?
R/ En el anterior se puede ver en la posición dos el valor 3, entonces este sería reemplazado por el
nuevo número digitado por el usuario.
Verifica lo que sabes # 2

1. Realizar un programa en C++ que lea 5 números por teclado y los guarde en un vector,
luego los multiplique por dos y los guarde en un segundo vector, para luego copiar en un
tercer vector todos los números del vector 1 y el vector 2 en el orden en que fueron
ingresados.
R/ Código:
#include<iostream>
#include<conio.h>

using namespace std;

int main()
{
int x;
int a [5];
int b [5];
int c [10];
for (int i=0; i<5; i++){
cout<<"Digite un valor numerico"<<endl;
cin>>x;
a[i]=x;
}
for (int i=0; i<5; i++){
cout<<a[i]<<endl;}
cout<<"\n";
for (int i=0; i<5; i++){
b[i]=2*a[i];
}
for (int i=0; i<5; i++){
cout<<b[i]<<endl;}
cout<<"\n";
for (int i=0; i<5; i++){
c[i]=a[i];
}
for (int i=5; i<10; i++){
c[i]= b[i-5];
}
for (int i=0; i<10; i++){
cout<<c[i]<<endl;}
cout<<"\n";
getch();
return 0;
}

También se puede encontrar el ejecutable como 2a.

2. Realizar un programa en C++ que guarde en un vector los números impares comprendidos
entre 1 y 100, y los muestre en pantalla en orden ascendente.
R/Código:
#include<iostream>
#include<conio.h>

using namespace std;

int main()
{
int a=0;
int vector[50];
for (int i=0; i<50; i++){
vector[i]=1+a;
a=a+2;
}
for (int i=0; i<50; i++){
cout<<vector[i]<<endl;
}
getch();
return 0;
}

También se puede encontrar en el ejecutable como 2b.

3. Realizar un programa en C++ que guarde en un vector los números primos comprendidos
entre 1 y 100, y los muestre en pantalla en orden ascendente.
R/ Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
int cont, x, z, i=0, vector[36];
for(x=1;x<=100;x++)
{
cont=0;
for(z=1;z<=x;z++)
{
if(x%z==0)
{
cont++;
}
}

if(cont<=2 || z==1 || z==0)


{
vector[i]=x;
i++;
}
}

for(x=0;x<i;x++)
{
cout<<vector[x]<<endl;
}

getch();
return 0;

}
Se puede encontrar en 2c.
Verifica lo que sabes # 3

1. Ejército en Movimiento
Una unidad del ejército tiene que moverse a una nueva posición. Durante el movimiento
todos los soldados deben formar una fila india. De acuerdo con las reglas del Ejército cada
soldado siempre tiene que tener a la vista a sus subordinados. Por lo tanto, todos sus
subordinados deben ir en frente de él en la fila.
Se debe hacer la función revisar que verifique si la fila cumple o no con la condición de las
subordinaciones. Recibe como parámetros: los datos de los comandantes y subordinados
(relacionados entre sí – por ejemplo, al comandante [0] le corresponde el subordinado [0] y
así sucesivamente).
Su función debe imprimir si cumple o no la lista de subordinaciones. En caso de que no se
cumpla debe imprimir al menos una pareja comandante- subordinado que no esté
convenientemente alineada.

R/ Código:
#include<iostream>
#include<conio.h>
using namespace std;

int main ()
{
int x, y, z;
int vector [5];
int b [5];
int c [5];
for (int i=0; i<5; i++)
{
cout<<"Digite el numero del soldado(1-5) en la posicion "<<i+1<<endl;
cin>>x;
vector [i]=x;
}
for (int a=0; a<5; a++)
{
cout<<"Digite el numero del comandante(1-5) en la posicion "<<a+1<<endl;
cin>>y;
b[a]=y;
}
for (int u=0; u<5; u++)
{
cout<<"Digite el numero del subordinado(1-5) en la posicion "<<u+1<<endl;
cin>>z;
c[u]=z;
}
cout<<"Fila soldados"<<endl;
for (int d=0; d<5; d++)
{
cout<<vector[d]<<endl;
}
cout<<"Fila comandantes"<<endl;
for (int d=0; d<5; d++)
{
cout<<b[d]<<endl;
}
cout<<"Fila subordinados"<<endl;
for (int d=0; d<5; d++)
{
cout<<c[d]<<endl;
}
cout<<"Ahora vamos a revisar si estan en orden"<<endl;
for (int d=0; d<5; d++)
{
if (vector[d]==b[d]||vector[d]==c[d]||b[d]==c[d]){
cout<<"La posicion "<<d+1<<" es correcta en al menos un caso"<<endl;
cout<<"Posicion soldado "<<d+1<<" con valor "<<vector[d]<<" Posicion comandante
"<<d+1<<" con valor "<<b[d]<<" Posicion subordinado "<<d+1<<" con valor "<<c[d]<<endl;
}
else{
cout<<"La posicion "<<d+1<<" no es correcta en al menos un caso"<<endl;
cout<<"Posicion soldado "<<d+1<<" con valor "<<vector[d]<<" Posicion comandante
"<<d+1<<" con valor "<<b[d]<<" Posicion subordinado "<<d+1<<" con valor "<<c[d]<<endl;
}
}
}
Se puede encontrar en 3a. (Cabe mencionar que este no se pide).
2. Picas y fijas
Un juego muy conocido es picas y fijas, el cual consiste en tratar de adivinar un número en
la menor cantidad de intentos. En cada intento, el jugador dice 4 dígitos (no repetidos) y el
oponente le da pistas de cuántos aciertos tuvo, sin indicarle cuales fueron, de la siguiente
forma: Si el dígito que dice el jugador se encuentra dentro del número a adivinar, pero no
está en la posición correcta, se llama PICA.
Si el digito se encuentra en la posición adecuada, se llama FIJA. Así, las pistas serán la
cantidad de PICAS y la cantidad de FIJAS que se tienen. El juego termina cuando algún
jugador tiene 4 FIJAS (4 dígitos en el orden adecuado).
a. Hacer una función que reciba un arreglo de 4 posiciones enteras y lo llene con 4 dígitos no
repetidos.
Los dígitos se le deben pedir al usuario, pero la función debe validar que el usuario no ingrese
números repetidos.
R/ Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
int a[4];
int b,c=0;
for (int i=0;i<4;i++)
{
cout<<"Ingrese valor, recuerde no repetir(le dira denegado)"<<endl;
cin>>b;
if (c!=b){
a[i]=b;
}
else{
cout<<"Denegado, ingrese otro numero"<<endl;
i=i-1;
}
c=b;
}
for (int i=0;i<4;i++){
cout<<"Numeros ingresados "<<a[i]<<endl;
}
getch ();
return 0;
}

Se puede encontrar como 3b-a.

b. Hacer una función que reciba dos arreglos (el primero corresponde al número secreto y el
segundo a la jugada de un jugador) y retorne la cantidad de PICAS.
R/ Código:
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <time.h>

using namespace std;

int main ()
{
int z[4];
int a[4];
int b, c=0,nums, cont=0;
for (int i=0; i<4;i++)
{
nums= rand()%10;
if (c!=nums){
z[i]=nums;
}
else{
i=i-1;
}
c=nums;
}
for (int i=0;i<4;i++)
{
cout<<z[i]<<" es el numero secreto"<<endl;
}
cout<<"Pista: Recuerde que estos numeros no se repiten"<<endl;
c=0;//Comienza el jugador.
for (int i=0;i<4;i++)
{
cout<<"Ingrese valor, recuerde no repetir(le dira denegado)"<<endl;
cin>>b;
if (c!=b){
a[i]=b;
}
else
{
cout<<"Denegado, ingrese otro numero"<<endl;
i=i-1;
}
c=b;
}
for (int i=0;i<4;i++)
{
cout<<"Numeros ingresados "<<a[i]<<endl;
}
for (int x=0; x<4; x++)
{
for (int i=0; i<4; i++)
{
if (z[i]==a[x] && x!=i)
{
cont++;
}
}
}
cout<<"Numero de picas: "<<cont<<endl;
getch ();
return 0;
}
Se puede encontrar en 3b-b.

c. Hacer una función que reciba dos arreglos (el primero corresponde al número secreto y el
segundo a la jugada de un jugador) y retorne la cantidad de FIJAS.
R/ Código:
#include <iostream>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main ()
{
int z[4];
int a[4];
int b, c=0,nums, cont=0;
for (int i=0; i<4;i++)
{
nums= rand()%9;
if (c!=nums){
z[i]=nums;
}
else{
i=i-1;
}
c=nums;
}
for (int i=0;i<4;i++)
{
cout<<z[i]<<" es el numero secreto"<<endl;
}
cout<<"Pista: Recuerde que estos numeros no se repiten"<<endl;
c=0;//Comienza el jugador.
for (int i=0;i<4;i++)
{
cout<<"Ingrese valor, recuerde no repetir(le dira denegado)"<<endl;
cin>>b;
if (c!=b){
a[i]=b;
}
else
{
cout<<"Denegado, ingrese otro numero"<<endl;
i=i-1;
}
c=b;
}
for (int i=0;i<4;i++)
{
cout<<"Numeros ingresados "<<a[i]<<endl;
}
for (int x=0; x<4; x++)
{
if (z[x]==a[x])
{
cont++;
}
}
cout<<"Numero de fijas: "<<cont<<endl;
getch ();
return 0;
}

Se puede encontrar en 3b-c.


d. Hacer un programa que permita que un jugador ingrese un vector de 4 dígitos no repetidos
y que permita que otro jugador ingrese posibles jugadas, hasta cuando adivine el número
secreto. El programa finalizará cuando se adivine el número o cuando el usuario no desee
continuar. El algoritmo deberá mostrar la cantidad de jugadas realizadas.
R/ Código:
#include <iostream>
#include <stdlib.h>
#include <conio.h>

using namespace std;

int main ()
{
int z[4];
int a[4];
int b, c=0,nums, contc=0, contf=0, turno=0;
for (int i=0; i<4;i++)
{
cout<<"Ingrese numero secreto, recuerde no repetir numeros"<<endl;
cin>>nums;
if (c!=nums){
z[i]=nums;
}
else{
i=i-1;
}
c=nums;
}
for (int i=0;i<4;i++)
{
cout<<z[i]<<" es el numero secreto"<<endl;
}
cout<<"Pista: Recuerde que estos numeros no se repiten"<<endl;
c=0;//Comienza el jugador.
while (contf<4)
{
contc=0;
contf=0;
c=0;
for (int i=0;i<4;i++)
{
cout<<"Ingrese valor, recuerde no repetir(le dira denegado)"<<endl;
cin>>b;
if (c!=b){
a[i]=b;
}
else
{
cout<<"Denegado, ingrese otro numero"<<endl;
i=i-1;
}
c=b;
}
for (int i=0;i<4;i++)
{
cout<<"Numeros ingresados "<<a[i]<<endl;
}
for (int x=0; x<4; x++)
{
for (int i=0; i<4; i++)
{
if (z[i]==a[x] && x!=i)
{
contc++;
}
}
}
cout<<"Numero de picas: "<<contc<<endl;
for (int x=0; x<4; x++)
{
if (z[x]==a[x])
{
contf++;
}
}
cout<<"Numero de fijas: "<<contf<<endl;
turno++;
cout<<"Turno numero: "<<turno<<endl;
}
cout<<"Felicidades"<<endl;
getch ();
return 0;
}
Se puede encontrar en 3b-d.
Verifica lo que sabes # 4 (Ejercicios extras, no exigidos)
1. En una finca se construyó una piscina rectangular de n*m baldosines. Desafortunadamente
la piscina quedó mal construida y actualmente tiene el fondo irregular y con ondulaciones
por lo que si se coloca una esfera en algún baldosín (posición = posx, posy) de la piscina ésta
rueda hasta estancarse en el fondo de alguna ondulación (el borde es la única franja que quedo
sin profundidad).
Hay que solucionar el problema para que se lea dos valores posx y posy e indique hasta donde
rodaría una esfera colocada inicialmente en el baldosín de esa posición. Para resolver este
problema se tiene un mapa de baldosines que indica la profundidad a la que se encuentra cada
baldosín de la piscina.
Ejemplo: En una piscina de 6*6 (incluye el borde sin profundidad), si se coloca la esfera en
el baldosín 3,4 (profundidad 12), está rodará hasta el baldosín 2,2 (profundidad 20), por el
camino indicado; si en cambio se coloca inicialmente en el baldosín 4,2 (profundidad 15),
ésta rodará hasta el extremo 5,5 (profundidad 25) siguiendo el recorrido indicado.

Calcular una función para dada la posición inicial en (x,y) de la pelota se realice el recorrido
de la misma e imprimir su posición final (x,y).
R/ Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
int x;
int y;
int t[6][6]={0,0,0,0,0,0 ,0,20,16,14,15,0 ,0,15,13,12,14,0 ,0,15,11,12,15,0 ,0,14,18,20,25,0
,0,0,0,0,0,0};
int z[6][6];
for (int i=0; i<6; i++)
{
for (int a=0; a<6; a++)
{
cout<<t[i][a];
}
cout<<"\n";
}
cout<<"ingrese valor en la posicion en y "<<endl;//1,2...
cin>>y;
cout<<"ingrese valor en la posicion en x "<<endl;//1,2...
cin>>x;
y=y-1;
x=x-1;
cout<<"Esa posicion tiene un valor de profundidad de "<<t[y][x]<<endl;
if (y<=2)
{
cout<<"Posicion final "<<2<<","<<2<<". Con una profundidad de "<<t[1][1]<<endl;
}
else
{
cout<<"Posicion final "<<5<<","<<5<<". Con una profundidad de "<<t[4][4]<<endl;
}
getch ();
return 0;
}

Se encuentra en el ejecutable 4. Cabe mencionar que, debido a que no se entendió muy bien lo que se
pedía se dejó de esta forma.
Verifica lo que sabes # 5
1. Realizar un programa en C++ en donde se inicialice una matriz de 5 filas y 7 columnas
con valores numéricos y se encuentre el mayor de todos.
R/ Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
int x,y,num;
int t[5][7];
for (int i=0; i<5; i++)
{
for (int a=0; a<7; a++)
{
cout<<"Ingrese un valor numerico en la posicion(sin ingresar un numero repetido)
"<<i<<","<<a<<endl;
cin>>x;
if (y!=x)
{
t[i][a]=x;
}
else
{
cout<<"Valor no valido intente de nuevo"<<endl;
a=a-1;
}
y=x;
}
}
for (int i=0; i<5; i++)
{
for (int a=0; a<7; a++)
{
cout<<t[i][a];
}
cout<<"\n";
}
x=0;
y=t[0][0];
for (int i=0; i<5; i++)
{
for (int a=0; a<7; a++)
{
x=t[i][a];
if (x>y)
{
num=x;
y=x;
}
}
}
cout<<num<<" Es el numero mas grande"<<endl;
getch ();
return 0;
}
Se puede encontrar como 5a. Se le añadió la condición de que no se puede repetir un valor
numérico cuando se le asignan valores a la matriz [5][7].

2. Realizar un programa en C++ que multiplique dos matrices de 3x3 y muestre el resultado
al final de la operación.
R/ Código:
#include <iostream>
#include <conio.h>

using namespace std;

int main ()
{
int h,j;
int z[3][3];
int m[3][3];
int u[3][3];
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
cout<<"Digite los numeros de la primera matriz en la posicion "<<i<<","<<a<<endl;
cin>>h;
z[i][a]=h;
}
}
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
cout<<z[i][a];
}
cout<<"\n";
}
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
cout<<"Digite los numeros de la segunda matriz en la posicion "<<i<<","<<a<<endl;
cin>>h;
m[i][a]=h;
}
}
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
cout<<m[i][a];
}
cout<<"\n";
}
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
u[i][a]=z[i][a]*m[i][a];
}
}
cout<<"nuevo vector"<<endl;
for (int i=0; i<3; i++)
{
for (int a=0; a<3; a++)
{
cout<<u[i][a];
}
cout<<"\n";
}
getch();
return 0;
}
Se puede encontrar en 5b.

También podría gustarte