Vous êtes sur la page 1sur 25

1. ¿Cuál es la salida del siguiente programa?

#include<iostream>

#include<iomanip>

using namespace std;

int main(){

int n=8;

cout<<setw(n)<<"12"<<setw(n)<<123<<setw(n)<<12909<<setw(n)<<123456<<endl;

cout<<setw(n)<<"000012"<<endl;

return 0;

PANTALLA

______1 2_____123___12909__123456
__000012
_

2. ¿Cuál es la salida del siguiente programa?

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;
int main(){
int n=1;
cout<<setprecision(n)<<cos(1)<<endl;
n=2;
cout<<setprecision(n)<<cos(1)<<endl;
n=4;
cout<<setprecision(n)<<cos(1)<<endl;
n=8;
cout<<setprecision(n)<<cos(1)<<endl;

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_____95____281___1011__20114
¿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[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]


9 8 7 6 5 4 3 2 1
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

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]
100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85
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 imprimir(char [][9],int);


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;

A[i2][j2]='*';
}

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;

Intenta emular el gusanito.


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);

cout<<numvocales(A,n);
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 error);

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”

#include<iostream>
using namespace std;
void imprimir( char [ ], int );
void ocultar( char [ ], char [ ], int);
int main(){
int n;
char A[10];
char
B[26]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’,’k’,’l’,’m’,’n’,’o’,’p’,’q’,’r’,’s’,’t’,’u’,’v’,’w’,’x’,’y’,’
z’};
cin.getline(A,10);
cout<<”ingrese un numero”<<endl;
cin>>n;
ocultar(a, b, n);
imprimir(a,n);
system(“pause”);
return 0;
}
void imprimir( char a[ ], int n){
for( int i=0; i<n; i++){
cout<< A[i]<<” “;
}
}

void ocultar( char A[ ], char B[ ], int n){


char aux;
for( int i=0; i<n; i++){
for( int j=0; j<26; j++){
if( A{i]==B[j]){
aux=B[(7*j+666)%26];

}
}
A[i]=aux;
}
}

Vous aimerez peut-être aussi