1.
1. ¿Cuál es la salida del siguiente programa?¿Cuál es la salida del siguiente programa? #include<iostream> #include<iostream> #include<iomanip> #include<iomanip> using namespace std; using namespace std; int main(){ int main(){ int n=8; int n=8; cout<<setw(n)<<"12"<<setw(n)<<123<<setw(n)<<12909<<setw(n)<<123456<<endl; cout<<setw(n)<<"12"<<setw(n)<<123<<setw(n)<<12909<<setw(n)<<123456<<endl; cout<<setw(n)<<"000012"<<endl; cout<<setw(n)<<"000012"<<endl; return 0; return 0; }} PANTALLA PANTALLA _ _ _ _ _ _ 1 _ _ _ _ _ _ 1 2 _ _ _ _ _ 1 2 3 _ _ _ 1 2 9 0 9 _ _ 1 2 3 4 5 62 _ _ _ _ _ 1 2 3 _ _ _ 1 2 9 0 9 _ _ 1 2 3 4 5 6 _ _ 0 0 0 0 1 2 _ _ 0 0 0 0 1 2 _ _ 2.
2. ¿Cuál es la salida ¿Cuál es la salida del siguiente programa?del siguiente programa?
#include<iostream> #include<iostream> #include<iomanip> #include<iomanip> #include<cmath> #include<cmath> using namespace std; using namespace std; int main(){ int main(){ int n=1; int n=1; cout<<setprecision(n)<<cos(1)<<endl; cout<<setprecision(n)<<cos(1)<<endl; n=2; n=2; cout<<setprecision(n)<<cos(1)<<endl; cout<<setprecision(n)<<cos(1)<<endl; n=4; n=4; cout<<setprecision(n)<<cos(1)<<endl; cout<<setprecision(n)<<cos(1)<<endl; n=8; n=8; cout<<setprecision(n)<<cos(1)<<endl; cout<<setprecision(n)<<cos(1)<<endl; return 0; return 0; }}
PANTALLA 0.5 0.54 0.5403 0.54030231 _
3. ¿Cuál es la salida del siguiente programa? #include<iostream> #include<cstdio> #include<cstdlib> #include<iomanip> #include<cmath> #include<ctime> using namespace std; int main(){ srand(time(NULL)); int x,z;
for(int i=1; i<6; i++){ z=pow(10,i); x=1+rand()%z; cout<<setw(7)<<x; } cout<<endl; return 0; } x z i 1 10 1 95 100 2 281 1,000 3 1011 10,000 4 20,114 100,000 5 6 PANTALLA _ _ _ _ _ _ 1 _ _ _ _ _ 9 5 _ _ _ _ 2 8 1 _ _ _ 1 0 1 1 _ _ 2 0 1 1 4
¿Cuál es el rango que toma x en cada repetición? [1,10] [1,100] [1,1000] [1,10,000] [1,100,000]
4. Considere la instrucción x=134+rand()%801. El rango de valores que puede tomar la variable x es: [134, 934]__
5. Para el siguiente código: #include<iostream> #include<iomanip> #include<cmath> using namespace std; int factorial(int n); int main(){ int N=5; int techo; techo=ceil(log(factorial(N)/(factorial(floor(N/2))*factorial(N-floor(N/2))))/log(10))+1; cout<<"este es el techo"<<techo<<endl;
for(int i=0; i<=N; i++){
cout<<setw(techo*(N-i)+1)<<" "; for(int j=0; j<=i;j++) cout<<setw(techo)<<factorial(i)/(factorial(j)*factorial(i-j))<<setw(techo)<<" "; cout<<endl; } return 0; } int factorial(int n){
if (n==0 || n==1) return 1; else return n*factorial(n-1); } N i j techo 5 0 0 2 1 1 2 0 3 1 4 2 5 0 1 2 3 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 5 PANTALLA 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
6. Que es un parámetro por referencia
significa que se pasa la posición de memoria donde esta guardada la variable, por lo que la función puede saber cuánto vale, pero además puede modificarla de cualquier manera.
7. ¿Cuál es la salida por pantalla del siguiente programa cuando n=123456789? #include<iostream> #include<cstdio> #include<cstdlib> #include<iomanip> #include<cmath> #include<ctime> using namespace std;
void ParametroReferencia(int& z, int A[], int N); int main(){ int N,n; cout<<"ingrese un numero"; cin>>n; N=floor(log(n)/log(10)); int A[N+1]; ParametroReferencia(n,A,N); cout<<"el numero es "<<n<<endl; return 0;
}
void ParametroReferencia(int& z, int A[], int N){ for(int i=0; i<=N; i++){
A[i]=z%(int)pow(10,i+1)/(int)pow(10,i); }
z=0;
for(int i=0; i<=N; i++){ z=z+A[N-i]*pow(10,i); } } N n z i i 8 123456789 123456789 0 0 0 1 2 1 2 3 21 3 4 321 4 5 4321 5 6 54321 6 7 654321 7 8 7654321 8 9 87654321 987654321 A
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
PANTALLA
Ingrese un numero: 123456789 ¿El número es? 987654321
8. Haga la prueba de escritorio del programa anterior con n=12345.
N n z i i 4 12345 12345 0 0 0 1 1 21 2 2 321 3 3 4321 4 4 54321 A 5 4 3 2 1 PANTALLA Ingrese un numero: 12345 ¿El número es? 54321
9. ¿Cuál es la salida por pantalla del siguiente algoritmo? #include<iostream>
using namespace std;
void ParametroReferencia(int& z, int A[],int N); void burbuja(int[],int,int);
void imprimir(int [],int p, int q); int main(){
int A[100];
for(int s=0; s<100; s++) A[s]=100-s;
burbuja(A,95,99); imprimir(A,95,99);
return 0; }
void burbuja(int A[],int p,int q){ int aux;
for(int i=2; i<=q-p+1; i++)
for(int j=p; j<=q+1-i;j++) if(A[j]>A[j+1]){ aux=A[j]; A[j]=A[j+1]; A[j+1]=aux; } }
void imprimir(int A[], int p, int q){ for(int i=p; i<=q; i++)
cout<<"A["<<i<<"]="<<A[i]<<endl; } PANTALLA A[95]=1 A[96]=2 A[97]=3 A[98]=4 A[99]=5
10. Haga una prueba de escritorio del programa anterior para las variables indicadas.
A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] A[11] A[12] A[13] A[14] A[15]
A[16] A[17] A[18] A[19] A[20] A[21] A[22] A[23] A[24] A[25] A[26] A[27] A[28] A[29] A[30] A[31]
84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69
A[32] A[33] A[34] A[35] A[36] A[37] A[38] A[39] A[40] A[41] A[42] A[43] A[44] A[45] A[46] A[47]
68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53
A[48] A[49] A[50] A[51] A[52] A[53] A[54] A[55] A[56] A[57] A[58] A[59] A[60] A[61] A[62] A[63]
52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37
A[64] A[65] A[66] A[67] A[68] A[69] A[70] A[71] A[72] A[73] A[74] A[75] A[76] A[77] A[78] A[79]
36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21
A[80] A[81] A[82] A[83] A[84] A[85] A[86] A[87] A[88] A[89] A[90] A[91] A[92] A[93] A[94]
20 19 18 17 16 15 14 13 12 11 10 9 8 7 6
A[95] A[96] A[97] A[98] A[99]
1 2 3 4 5 s aux p q I j 0 5 95 99 2 95 1 5 3 96 5 4 97 5 5 98 4 6 99 4 95 95 4 96 96 3 97 97 3 98 98 2 99 95 100 96 97 95 96
11. ¿Que intenta emular el programa? #include<iostream>
#include<cstdio> #include<cstdlib> #include<iomanip> using namespace std;
void movimiento(char [][9],char,int[]); int main(){ int N=9; char mov='q'; char A[9][9]; int I[2]; cout<<"Instrucciones"<<endl; cout<<"x. Izquierda"<<endl; cout<<"c. Abajo"<<endl; cout<<"v. Derecha"<<endl; cout<<"d. Arriba"<<endl; cout<<"p. Para salir"<<endl; for(int i=0;i<9;i++) for(int j=0;j<9;j++) A[i][j]='*'; A[0][0]=A[0][1]=A[0][2]='0'; I[0]=0; I[1]=2; system("sleep 5"); system("clear"); //Imprimir(A,9); while(mov!='p'){ imprimir(A,9); cin>>mov; movimiento(A,mov,I); system("clear"); } return 0; }
void movimiento(char A[][9],char z,int I[]){ int i1,j1,i2,j2,i,j;
i=I[0]; j=I[1]; if(A[i][(j+1)%9]=='0'){ i1=i; j1=(j+1)%9; } if(A[i][(j+8)%9]=='0'){ i1=i; j1=(j+8)%9; } if(A[(i+1)%9][j]=='0'){ i1=(i+1)%9; j1=j; } if(A[(i+8)%9][j]=='0'){ i1=(i+8)%9; j1=j; } if(A[i][(j+2)%9]=='0'){ i2=i; j2=(j+2)%9; } if(A[i][(j+7)%9]=='0'){ i2=i; j2=(j+7)%9; } if(A[(i+2)%9][j]=='0'){ i2=(i+2)%9; j2=j; } if(A[(i+7)%9][j]=='0'){
i2=(i+7)%9; j2=j; } if(A[(i+1)%9][(j+1)%9]=='0'){ i2=(i+1)%9; j2=(j+1)%9; } if(A[(i+1)%9][(j+8)%9]=='0'){ i2=(i+1)%9; j2=(j+8)%9; } if(A[(i+8)%9][(j+1)%9]=='0'){ i2=(i+8)%9; j2=(j+1)%9; } if(A[(i+8)%9][(j+8)%9]=='0'){ i2=(i+8)%9; j2=(j+8)%9; } if(z=='x' && j1!=(j+8)%9){ A[i][(j+8)%9]='0'; I[0]=i; I[1]=(j+8)%9; A[i2][j2]='*'; }
if(z=='c' && i1!=(i+1)%9){ A[(i+1)%9][j]='0'; I[0]=(i+1)%9; I[1]=j;
}
if(z=='d' && i1!=(i+8)%9){ A[(i+8)%9][j]='0'; I[0]=(i+8)%9; I[1]=j; A[i2][j2]='*'; } if(z=='v' && j1!=(j+1)%9){ A[i][(j+1)%9]='0'; I[0]=i; I[1]=(j+1)%9; A[i2][j2]='*'; } }
void imprimir(char A[][9],int N){ for(int i=0;i<N;i++){ for(int j=0;j<N;j++) cout<<setw(2)<<A[i][j]; cout<<endl; } }
PARTE PRACTICA
1. Escriba una función que intercambie los valores de dos variables enteras y luego los imprima
#include<iostream> using namespace std;
void intercambiar(int& , int& ); int main(){
int n1,n2;
cout<<"ingrese dos numeros enteros"<<endl; cin>>n1>>n2;
cout<<"el primer valor ingresado fue "<<n1<<endl; cout<<"el segundo valor ingresado fue "<<n2<<endl; intercambiar(n1,n2);
cout<<" el nuevo valor del primer numero es "<<n1<<endl; cout<<"el nuevo valor del segundo numero es "<<n2<<endl;
return 0;
}
void intercambiar(int& v1, int& v2){ int temp=v1;
v1=v2; v2=temp;
}
2. Escriba una función que reciba un numero entero positivo y luego almacene sus digitos en un arreglo. El prototipo de la función debe ser de la forma
void digitos(int [], int, int)
#include<iostream> using namespace std; void digitos(int[],int,int); int main(){ int A[100]; int numero; int k=0,acum; cout<<"ingrese un numero: "; cin>>numero; acum=numero; while (acum>0){ acum/=10; k++;
}
digitos(A,k,numero);
return 0; }
void digitos(int A[],int k,int numero){ int residuo; for(int j=0; j<k; j++){ residuo=numero%10; numero/=10; A[k-j-1]=residuo; }
for(int i=0; i<k;i++){
cout<<"A["<<i<<"]="<<A[i]<<endl; }
}
3. Escriba una función que determine si un numero entero es capicúa #include<iostream> using namespace std; void digitos(int[],int,int); void capicua(int[],int); int main(){ int A[100]; int numero; int k=0,acum; cout<<"ingrese un numero: "; cin>>numero; acum=numero; while (acum>0){ acum/=10; k++; } digitos(A,k,numero); capicua(A,k);
return 0; }
void digitos(int A[],int k,int numero){ int residuo; for(int j=0; j<k; j++){ residuo=numero%10; numero/=10; A[k-j-1]=residuo; } }
void capicua(int A[],int k){
int temp=k/2,n=0; for(int i=0;i<temp;i++){ if (A[i]==A[k-i-1]){ n++; } } if(n==temp){
cout<<"\nEste numero es capicua"; }
else{
cout<<"\nEste numero no es capicua"; }
}
4. Escriba un programa que reciba un numero natural y lo transforme a la base binaria. El prototipo de la función debe ser de la forma
Void binario(int &)
#include<iostream> using namespace std;
void binario(int& ); int main(){ int numero; cout<<"ingrese un numero"; cin>>numero; binario(numero); return 0; }
void binario(int& numero){
int temp,A[100],k=0,i=0,m; temp=numero; while(temp>=2){ temp/=2; k++; } while(numero>=2){ m=numero%2; numero/=2; A[k-i]=m; i++; } A[0]=numero; for (int j=0; j<=k;j++){ cout<<A[j]; } }
5. Desarrolle una función que reciba un arreglo de caracteres y retorne el numero de vocales que este arreglo contiene
#include<iostream> #include<string.h>
using namespace std;
int numvocales(char A[],int n); int main(){
char A[100]; int n=0;
cout<<"ingrese un arreglo de caracteres "<<endl; cin>>A;
n=strlen(A);
return 0; }
int numvocales(char A[],int n){ int k=0;
for(int i=0;i<n;i++){
if((A[i]=='a') || (A[i]=='e')|| (A[i]=='i')|| (A[i]=='o')|| (A[i]=='u')){ k++;
} }
return k; }
6. El juego ahorcado se juega con dos personas (o una persona y una computadora). Un jugador selecciona una palabra y el otro jugador trata de adivinar la palabra adivinando letras individuales. Diseñar un programa para jugar al ahorcado. Sugerencia: almacenar una lista de palabras en un arreglo, y seleccionar palabras aleatoriamente.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define N 12 char txt[11]; char datos[N][11]={ "laptop","zapato","camisa","burbuja", "reflejo","pescado","aventura","alfiler", "gusano","taxi","carne","corazon"}; char dibuj[9][7]={ "____", "| |", "| |", "|", "|", "|", "|", "|", "----" }; struct pst{ int pos;
char part[5];
}parts[7]={{3," O"},{4," /"},{4,"|"}, {4,"\\"},{5," |"},{6," /"},{6," \\"}};
int main(int argc, char *argv[]) { int n,m,o,p,i,j,r,eq=0;char lc,tmp[10]; srand(time(NULL)); o=rand()%N; m=strlen(datos[o]);p=m-2; txt[0]=datos[o][0];txt[m-1]=datos[o][m-1]; for(n=1;n<m-1;n++)txt[n]='_';txt[m]=0; printf("Juego del Ahorcado \n\n");tmp[0]=0; for(i=0;i<11;i++)printf("%s\n",dibuj[i]); do{ for(j=0;j<strlen(tmp);j++){ lc=tmp[j];r=p; for(n=1;n<m-1;n++) if(datos[o][n]==lc){ txt[n]=lc;datos[o][n]='_';p--; } if(r==p){ strcat(dibuj[parts[eq].pos],parts[eq].part); eq++; } for(i=0;i<11;i++)printf("%s\n",dibuj[i]); } if(eq>=7)break; if(p>0){
printf("\nPalabra: %s - Ingrese 1 letra (* para terminar): ",txt); scanf("%10s",&tmp); }lc=tmp[0]; system("cls"); }while(lc!='*'&&p); if(!p)printf("\nPalabra: %s - Ganaste \n\n",txt); else if(eq>=7)printf("\nPerdiste \n\n");
else printf("\nK c's Vamos bien \n\n");
system("PAUSE"); return 0;
}
7. Diseñe una función que reciba tres arreglos bidimensionales(matrices) de números reales de Tamaño 9x9 y sume los dos primeros arreglos (suma de matrices) y almacene el resultado en
el tercer arreglo bidimensional.
#include<iostream> #include<iomanip>
using namespace std;
void suma(int A[2][2],int B[2][2], int S[2][2]);
int main(){
int A[2][2], B[2][2], S[2][2];
cout<<"ingrese la primer matriz"<<endl; for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
cout<<"A["<<i+1<<"]["<<j+1<<"]="; cin>>A[i][j];
}
}
cout<<"ingrese la segunda matriz"<<endl; for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
cout<<"B["<<i+1<<"]["<<j+1<<"]="; cin>>B[i][j];
}
}
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){ cout<<setw(4)<<A[i][j]; } cout<<endl; } cout<<setw(4)<<"+"<<endl;
for(int i=0; i<2; i++){ for(int j=0; j<2; j++){
cout<<setw(4)<<B[i][j]; }
cout<<endl;
}
suma(A,B,S);
return 0; }
void suma(int A[2][2],int B[2][2], int S[2][2]){ for(int i=0; i<9; i++){
for(int j=0; j<2; j++){
S[i][j]=A[i][j]+B[i][j]; }
}
cout<<"="<<endl;
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){ cout<<setw(4)<<S[i][j]; } cout<<endl; } }
8. Investigar: Diseñe una función que aplique el método de bisección a la ecuación asin(x)+bcos=0 para ello la función debe tener el siguiente prototipo:
double biseccion( double a, doublé b, double error)
la function debera entregar la aproximación de la solución a la ecuación. La variable error representa el error de aproximación
#include<iostream> #include<math.h> #include<iomanip>
#define PRECISION 6 using namespace std;
double biseccion(double a, double b, double er ror);
int main(){
double a; double b; double error;
cout<<"Este programa calcula una raiz dentro de un intervalo con un error de\n aproximacion deseado por el usuario\n\n";
cout<<"La funcion tiene la forma\t \t a * sin(x) + b * cos(x) = 0 \n \n"; cout<<"Ingrese los valores de a y b\n"<<endl;
cout<<"a= "; cin>>a; cout<<"b= "; cin>>b;
cout<<"Ingrese el error tolerado: "<<endl; cin>>error;
biseccion(a,b,error);
return 0; }
double biseccion(double a, double b, double error){ double c, d, e, f, g, h, i, j;
double xr;
cout<<setprecision(PRECISION);
cout<<"La funcion tiene la forma\t \t"<<a<<" sin(x) + "<<b<<" cos(x) = 0 \n \n";
cout<<"Por favor, ingrese el intervalo inicial en donde desea conocer las raíces de la funcion [c,d]"<<endl; cout<<"c = ";cin>>c; cout<<"\n"; cout<<"d = ";cin>>d; cout<<"\n\n\n"; e=((d-c)/10); cout<<"(x)\t\t"<<"f(x)"<<endl; while (c<d){ f=(a*sin(c)+b*cos(c)); cout<<c<<"\t\t"<<f<<endl; c=c+e; }
cout<<"Por favor, ingrese el intervalo adecuado"<<endl; cout<<"c = ";cin>>c;
cout<<"d = ";cin>>d; f=(a*sin(c)+b*cos(c));
g=(a*sin(d)+b*cos(d)); if (f*g>0){
cout<<" No se puede aplicar el metodo de la biseccion porque\n"; cout<<" f("<<c<<") y f("<<d<<") Tienen el mismo signo"<<endl;
}
else {
cout<< "Error o Tolerancia = "; cout<<error<<"\n\n"; cout<<"c\td\tx\t f(c) \tf(d) \tf(x)\n\n"; do{ xr=((c+d)/2.0); h=(a*sin(xr)+b*cos(xr)); cout<<c<<"\t"<<d<<"\t"<<xr<<"\t"<<f<<"\t"<<g<<"\t"<<h<<endl; if(fabs(h)<=error){
cout<<"\nPara un error o tolerancia de "<<error<<" La raiz de la funcion es: "<<xr<<endl; break; }else { if(h*f>0){ c=xr; }else if(h*g>0){ d=xr; } } } while(1); } }
9. Suponga que se quiere ocultar una palabra. Las reglas que se deben respetar son las siguientes, Primero se enlistan las letras del abecedario de la siguiente forma:
a b c d e f g ….. y z
0 1 2 3 4 5 6 …… 24 25
Sea k la posición de alguna letra del abecedario, entonces la letra correspondiente a esta Posición será cambiada por la letra que tiene la posición (6k+666)%26. Por ejemplo la letra f Tiene posición 5, entonces esta letra será intercambiada por la letra que tiene por posición
(7x5+666)%26=25 esta posición corresponde a la letra z. es decir la letra f se cambia por la Letra z.
1. Desarrolle una función en c++ que reciba dos arreglos de caracteres , el primer arreglo tendrá Una palabra normal y el segundo arreglo se deberá almacenar la palabra oculta usando la regla Que ya se explico
2. Desarrolle una función que reciba un arreglo con una palabra oculta. Esta función debe imprimir En pantalla la palabra normal. Que dice la siguiente palabra: “pkpkgfs”