practica 11 laboratorio de computación para ingenieros fi

32
1 OBJETIVOS a) El alumno conocerá las tres formas básicas existentes en C para realizariteraciones y aprenderá a manejar las sentencias while, do-while y for. b) El alumno comprenderá la importancia que tienen estas instrucciones para resolverproblemas de programación y podrá distinguir cuál instrucción es más apropiadapara enfrentar un problema específico. Al final de esta práctica el alumno podrá: 1. Realizar exitosamente programas que involucren procesos que requieraniteraciones.

Upload: jorge-ivan-alba-hernandez

Post on 06-Jul-2015

1.686 views

Category:

Education


1 download

DESCRIPTION

Reporte con ejercicios resueltos de práctica 10 de laboratorio de computación para ingenieros. Facultad de Ingeniería UNAM.

TRANSCRIPT

Page 1: Practica 11 Laboratorio de Computación para Ingenieros FI

1

OBJETIVOS

a) El alumno conocerá las tres formas básicas existentes en C para

realizariteraciones y aprenderá a manejar las sentencias while, do-while y for.

b) El alumno comprenderá la importancia que tienen estas instrucciones para

resolverproblemas de programación y podrá distinguir cuál instrucción es más

apropiadapara enfrentar un problema específico.

Al final de esta práctica el alumno podrá:

1. Realizar exitosamente programas que involucren procesos que

requieraniteraciones.

Page 2: Practica 11 Laboratorio de Computación para Ingenieros FI

2

LISTA DE EJERCICIOS

1. Desarrollar un programa que eleve un número a cualquier potencia sin

utilizar labiblioteca math.h. El usuario debe introducir la base y la potencia.

2. Escribir un programa que calcule y muestre los valores de un intervalo de

temperatura en grados Fahrenheit y grados Centígrados. El usuario

seleccionará la temperatura más baja y más alta así como el incremento de

temperatura. La relaciónmatemática es

F = ( 9/5 ) C + 32

donde

F = Temperatura en grados Fahrenheit.

C = Temperatura en grados Centígrados.

3. Escribir un programa que reciba un número entero y diga si éste es primo o

no.

4. Realizar un programa que obtenga la siguiente numeración y la siguiente

posición.

1

232

34543

4567654

567898765

5. Escribir un programa que calcule y muestre los valores que se obtienen al

realizar sen(x) en un intervalo de valores para x. El usuario deberá

introducir seleccionará elvalor inicial, el valor final, así como el incremento

de la x.

Page 3: Practica 11 Laboratorio de Computación para Ingenieros FI

3

6. Escribir un programa que calcule y muestre los valores que se obtienen al

realizar log(x) en un intervalo de valores para x. El usuario deberá introducir

seleccionará elvalor inicial, el valor final, así como el incremento de la x.

7. Escribir un programa que obtenga la siguiente numeración y en la siguiente

posición.

1 6 15 20 15 6 1

1 5 10 10 5 1

1 4 6 4 1

1 3 3 1

1 2 1

1

8. Hacer un programa que calcule el factorial de un número mayor a cero.

9. Escribir un programa para calcular sen(x), cuyo desarrollo en serie es:

10. Elaborar un programa que permita sumar del 1 hasta el 100.

11. Construya un programa que simule un cajero automático muy simple. Este

programa debe permitir realizar múltiples operaciones mientras está en

funcionamiento, todo sobre una misma cuenta corriente. Las operaciones

pueden ser depósitos, consultas de saldo, retiros (siempre y cuando se

cuente con el dinero suficiente en la cuenta) y salir. No se permite el

sobregiro. Para determinar el saldo de la cuente corriente, el programa, al

inicio, debe permitir por única vez el saldo.

12. Elaborar un programa en lenguaje C que lea los siguientes datos de un

alumno:

Nombre y

5 calificaciones(mediante un ciclo)

Page 4: Practica 11 Laboratorio de Computación para Ingenieros FI

4

Y devuelve como salida el nombre y el promedio del alumno. El programa

debe preguntar si desea continuar calculando promedios en caso afirmativo

pregunte los datos de otro alumno e imprima sus salidas correspondientes.

Cuando ya no se desee continuar ingresando datos al programa debe

imprimir:

a) La cantidad de alumnos a la que se le calculó el promedio

b) El promedio del grupo y

c) La cantidad de alumnos con promedio mayor a 8

13. Un jugador empedernido quiere un programa que le permita apostar el

lanzamiento de un dado. Antes decada lanzamiento el jugador elige entre 1

y 6. Si al lanzar el dado obtiene el mismo número al que apostó, gana. De

lo contrario pierde. El jugador desea que este programa le permita jugar

repetidamente, y que lleve una estadística para saber al finalizar, cuántos

juegos ganó y cuántos perdió, así como el porcentaje del total de juegos

cada uno de estos números.

Page 5: Practica 11 Laboratorio de Computación para Ingenieros FI

5

EJERCICIOS QUE NO SALIERON

El ejercicio 14 no salió con ciclos, la única en que pudimos reproducir la pirámide

fue imprimiendo los números para cada renglón. Decidimos no incluir ese ejercicio

en la prácica.

Page 6: Practica 11 Laboratorio de Computación para Ingenieros FI

6

DESARROLLO DE ERJERCICIOS

1) Ejercicio 2

Desarrollar un programa que eleve un número a cualquier potencia sin utilizar la

biblioteca math.h. El usuario debe introducir la base y la potencia.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main (){

intnum,potencia,i,num_elevado;

printf("\n\n\tEste programa eleba un numero a una potencia.\n\n\tIngresa un

numero:\n\n\t");

scanf("%d", &num);

printf ("\n\n\tDame la potencia a la que quieres elevar el numero\n\n\t");

scanf("%d",&potencia);

num_elevado=num;

for(i=2;i<=potencia;i++){

num_elevado*=num;

}

printf("\n\n\tEl resultado de elevar %d a la %d es

%d\n\n\t",num,potencia,num_elevado);

fflush(stdin); getch();

}

Page 7: Practica 11 Laboratorio de Computación para Ingenieros FI

7

2) Ejercicio 4

Escribir un programa que calcule y muestre los valores de un intervalo de

temperatura en grados Fahrenheit y grados Centígrados. El usuario seleccionará

la temperatura más baja y más alta así como el incremento de temperatura. La

relación matemática es

F = ( 9/5 ) C + 32

donde

F = Temperatura en grados Fahrenheit.

C = Temperatura en grados Centígrados.

/*Programa que calcula y muestra los valores de un intervalo de temperatura en grados

Fahrenheit y grados centígrados. El usuario selecciona la temperatura más alta, la más baja y el

incremento */

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main(void){

int cent, inicio,fin, i,temp,inter;

floatfar;

printf("\n\n\tPara mostrar los valores de temperatura en un intervado, \n\n\tingresa la

temperatura inicial en grados centigrados:\n\n\t ");

scanf("%d",&inicio);

printf("\n\n\tAhora ingresa la temperatua final en grados centigrados:\n\n\t");

scanf("%d",&fin);

if(inicio>fin){

temp=inicio;

inicio=fin;

fin=temp;

}

printf("\n\n\tIngresa el intervalo con el que se se mostraran los resultados:\n\n\t");

scanf("%d",&inter);

for(i=inicio;i<=fin;i+=inter){

printf("\n\n\t%d%cC = %.2f,%cF",i, 248,far=(i*9/5)+32,248);

}

printf("\n\n\t");

system("pause");

}

Page 8: Practica 11 Laboratorio de Computación para Ingenieros FI

8

Page 9: Practica 11 Laboratorio de Computación para Ingenieros FI

9

3) Ejercicio 6

Escribir un programa que reciba un número entero y diga si éste es primo o no.

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

main(){

intnum,i,primo;

charop;

do {

system("cls");

printf("\n\n\tPara saber si un numero es primo, ingrese el

numro:\n\t");

scanf("%d",&num);fflush(stdin);

primo=0;

for(i=2;i<num;i++){

if(num%i==0)

primo=1;

}

if(primo==1)

printf("\n\n\tEl numero %d no es primo",num);

else

printf("\n\n\tEl numero %d es primo",num);

printf("\n\n\t%cDesea saber si otro numero es

primo%c(s/n)",168,63);

scanf("%c",&op); fflush(stdin);

}while(op=='s'||op=='S');

}

Page 10: Practica 11 Laboratorio de Computación para Ingenieros FI

10

4) Ejercicio 8

Realizar un programa que obtenga la siguiente numeración y la siguiente posición.

1

232

34543

4567654

567898765

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main(){

inti,j,k,centro=-1;

printf("t\t\t Programa que realiza una piramide de numeros\n\n");

for(i=1;i<=5;i++){

for(j=5;j>=i;j--)

printf(" ");

centro+=2;

if(i==1)

printf("1");

else{

for(k=i;k<=centro;k++)

printf("%d",k);

for(k=centro;k>=i;k--)

printf("%d",k);

}

printf("\n");

}

printf("\n\n\t");

system("pause");

}

Page 11: Practica 11 Laboratorio de Computación para Ingenieros FI

11

Page 12: Practica 11 Laboratorio de Computación para Ingenieros FI

12

5) Ejercicio 10

Escribir un programa que calcule y muestre los valores que se obtienen al realizar

sen(x) en un intervalo de valores para x. El usuario deberá introducir seleccionará

el valor inicial, el valor final, así como el incremento de la x.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<math.h>

main(void){

float x, seno, inicio, fin, incremento,temp;

printf("\n\n\tPara conocer los valores que toma sen(x) en un intervalo \n\tdonde

x=radianes,\n\n\tIngresa el valor inicial: ");

scanf("%f",&inicio);

printf("\n\n\tAhora el valor final: ");

scanf("%f",&fin);

printf("\n\n\tAhora ingresa el incremento a utilizar: ");

incremento=abs(incremento);

if(inicio>fin){

temp=inicio;

inicio=fin;

fin=temp;

}

scanf("%f",&incremento);

for(x=inicio;x<=fin;x+=incremento){

seno=sin(x);

printf("\n\n\tsen(%f)=%.4f",x,seno);

}

printf("\n\n\t");

system("pause");

}

Page 13: Practica 11 Laboratorio de Computación para Ingenieros FI

13

Page 14: Practica 11 Laboratorio de Computación para Ingenieros FI

14

6) Ejercicio 12

Escribir un programa que calcule y muestre los valores que se obtienen al realizar

log(x) en un intervalo de valores para x. El usuario deberá introducir seleccionará

el valor inicial, el valor final, así como el incremento de la x.

#include<stdio.h>

#include<conio.h>

#include<math.h>

main(){

float x, seno, inicio, fin, incremento,temp;

printf("\n\n\tPara conocer los valores que toma sen(x) en un intervalo

\n\tdonde x=radianes,\n\n\tIngresa el valor inicial: ");

scanf("%f",&inicio);

printf("\n\n\tAhora el valor final: ");

scanf("%f",&fin);

printf("\n\n\tAhora ingresa elel incremento a utilizar: ");

incremento=abs(incremento);

if(inicio>fin){

temp=inicio;

inicio=fin;

fin=temp;

}

scanf("%f",&incremento);

for(x=inicio;x<=fin;x+=incremento){

seno=log(x);

printf("\n\n\tsen(%f)=%.4f",x,seno);

}

printf("\n\n\t");

system("pause");

}

Page 15: Practica 11 Laboratorio de Computación para Ingenieros FI

15

Page 16: Practica 11 Laboratorio de Computación para Ingenieros FI

16

7) Ejercicio 14

Escribir un programa que obtenga la siguiente numeración y en la siguiente

posición.

1 6 15 20 15 6 1

1 5 10 10 5 1

1 4 6 4 1

1 3 3 1

1 2 1

1

Page 17: Practica 11 Laboratorio de Computación para Ingenieros FI

17

8) Ejercicio 16

Hacer un programa que calcule el factorial de un número mayor a cero.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main(void){

intfac=1,i,num;

printf("\n\n\tPara obtener e factorial de un numero,\n\n\tIngrese un numero mayor a

cero: ");

scanf("%d",&num);

while (num<=0){

printf("\n\n\t%d no es mayor a cero, ontente de nuevo: ",num);

scanf("%d",&num);

}

printf("\n\n\t%d%c= 1",num,33);

for(i=2;i<=num;i++){

fac*=i;

printf("%c%d",42,i);

}

printf(" =%d\n\n\t",fac);

system("pause");

}

Page 18: Practica 11 Laboratorio de Computación para Ingenieros FI

18

9) Ejercicio 18

Escribir un programa para calcular sen(x), cuyo desarrollo en serie es:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<math.h>

main(){

float x, inicio, fin, incremento,temp;

double seno;/*usamos doublé, porque el resultado no cabe en un float */

printf("\n\n\tPara conocer los valores que toma sen(x) en un intervalo

\n\tdonde x=radianes,\n\n\tIngresa el valor inicial: ");

scanf("%f",&inicio);

printf("\n\n\tAhora el valor final: ");

scanf("%f",&fin);

printf("\n\n\tAhora ingresa elel incremento a utilizar: ");

incremento=abs(incremento);

if(inicio>fin){

temp=inicio;

inicio=fin;

fin=temp;

}

scanf("%f",&incremento);

for(x=inicio;x<=fin;x+=incremento){

seno=sin(x);

printf("\n\n\tsen(%.4lf)=%.4f",x,seno);

}

printf("\n\n\t");

system("pause");

}

Page 19: Practica 11 Laboratorio de Computación para Ingenieros FI

19

Page 20: Practica 11 Laboratorio de Computación para Ingenieros FI

20

10) Ejercicio 20

Elaborar un programa que permita sumar del 1 hasta el 100.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main(){

inti,suma;

suma=0;

printf("\t\t\tSUMA NUMEROS DEL 1 AL 100\n");

for(i=0;i<=99;i++){

suma=i+1;

printf("\n\t%d+1=%d",i,suma);

}

getch();

}

Page 21: Practica 11 Laboratorio de Computación para Ingenieros FI

21

11) Ejercicio a

Construya un programa que simule un cajero automático muy simple. Este

programa debe permitir realizar múltiples operaciones mientras está en

funcionamiento, todo sobre una misma cuenta corriente. Las operaciones pueden

ser depósitos, consultas de saldo, retiros (siempre y cuando se cuente con el

dinero suficiente en la cuenta) y salir. No se permite el sobregiro. Para determinar

el saldo de la cuente corriente, el programa, al inicio, debe permitir por única vez el

saldo.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

main(){

intretiro,numero,deposito;

float saldo=6543.25,tiempo;/*Tengo un saldo inicial que se irá modificando en cada

movimiento*/

charop;

printf("\n\n\tBuendia, has entrado a tu cuenta de TRANSIACCIONES,\n\n\tel banco que te

ofrese los mejores rendimientos. \n\n\t");

do{

printf("\n\n\t%cQu%c desea hacer%c:",168,130,63);

printf("\n\n\t\tA) Consulta de saldo\n\t\tB) Deposito\n\t\tC) Retiro en

efectivo\n\t\tD) Compra de tiempo aire\n\t\tE)

salir\n\n\tIngreseopci%cn:\n\n\t",162);

op=getch();

fflush(stdin);

switch(op){

case 'a': case 'A':

printf("\n\n\tSu saldo es de: %c%.2f\n\n\tPresione

un boton para continuar",36,saldo);

getch();

fflush(stdin);

break;

case 'b': case 'B':

printf("Ingrese el monto a depositar (debe ser

multiplo de 100): ");

scanf("%d",&deposito);

if(deposito>0&&deposito%100==0){

saldo+=deposito;

printf("\n\n\tUste acaba de

dopisitar: %c%d, Ahora su

Page 22: Practica 11 Laboratorio de Computación para Ingenieros FI

22

saldo es de

%c%.2f\n\n\tPresione un

boton para

continuar",36,deposito,36,sa

ldo);

getch(); fflush(stdin);

}

else

printf("\n\n\tError...");

getch(); fflush(stdin);

break;

case'c': case'C':

printf("\n\n\tIngrese cantidad que desea retirar

(deben ser multiplos de 100): ");

scanf("%d",&retiro);

if (retiro>=0&&retiro%100==0){

while(retiro>saldo){

printf("\n\n\tNo tiene

suficiente dinero en la cuenta para retirar %c%d\n\n\tIngrese otra

cantidad: ",32,retiro);

scanf("%d",&retiro);

}

saldo=saldo-retiro;

printf("\n\n\tAcaba de retirar

%c%d, su saldo ahora es de %c%.2f\n\n\tPresione un

boton para continuar",32,retiro,32,saldo);

getch(); fflush(stdin);

}

else{

printf("\n\n\tError...");

getch(); fflush(stdin);}

break;

case'd': case 'D':

printf("\n\n\tIngrese monto de tiempo aire que

desea comprar: ");

scanf("%f",&tiempo);

if(tiempo>0){

if(tiempo<=saldo){

saldo-=tiempo;

Page 23: Practica 11 Laboratorio de Computación para Ingenieros FI

23

printf("\n\n\tAhora

ingrese numero de telefono:");

scanf("%d",&numero);

printf("\n\n\tRecarga en

proceso,\n\n\ten breve resiviras un mensaje de

confirmacion\n\n\tPresione un boton para continuar");

getch(); fflush(stdin);

}

else{

printf("\n\n\tNo tiene suficiente

dinero en la cuenta");

printf("\n\n\t\n\n\tPresione un boton para continuar");

getch(); fflush(stdin);

}

}

else{

printf("\n\n\tError...");

getch(); fflush(stdin);

}

break;

case 'e': case'E':

printf("\n\n\tHa elegido salir, recuerde retirar

tarjeta al finalizar...\n\n\tGracias por su

preferencia.");

getch(); fflush(stdin);

break;

default:

printf("Error...");

}

system("cls");

} while (op!='e'&&op!='E');

}

Page 24: Practica 11 Laboratorio de Computación para Ingenieros FI

24

Page 25: Practica 11 Laboratorio de Computación para Ingenieros FI

25

Page 26: Practica 11 Laboratorio de Computación para Ingenieros FI

26

12) Ejercicio b

Elaborar un programa en lenguaje C que lea los siguientes datos de un alumno:

Nombre y

5 calificaciones(mediante un ciclo)

Y devuelve como salida el nombre y el promedio del alumno. El programa

debe preguntar si desea continuar calculando promedios en caso afirmativo

pregunte los datos de otro alumno e imprima sus salidas correspondientes.

Cuando ya no se desee continuar ingresando datos al programa debe

imprimir:

a) La cantidad de alumnos a la que se le calculó el promedio

b) El promedio del grupo y

c) La cantidad de alumnos con promedio mayor a 8

Page 27: Practica 11 Laboratorio de Computación para Ingenieros FI

27

Page 28: Practica 11 Laboratorio de Computación para Ingenieros FI

28

Page 29: Practica 11 Laboratorio de Computación para Ingenieros FI

29

13) Ejercicio c

Un jugador empedernido quiere un programa que le permita apostar el

lanzamiento de un dado. Antes de cada lanzamiento el jugador elige entre 1 y 6. Si

al lanzar el dado obtiene el mismo número al que apostó, gana. De lo contrario

pierde. El jugador desea que este programa le permita jugar repetidamente, y que

lleve una estadística para saber al finalizar, cuántos juegos ganó y cuántos perdió,

así como el porcentaje del total de juegos cada uno de estos números.

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<time.h>

main(){

floatperdidas_porc,ganancias_porc;

intdado,juegos_tot=0,gano=0,perdio,apuesta;

charresp,nombre[15];

printf("\n\n\t Hola, ingresa tu nombre:\n\t");

gets(nombre); system("cls");fflush(stdin);

printf("\n\n\t%s, este es un simulador lanzamiento de

dados.\n\n\t%cDeseasparticipar%c (s/n)",nombre,168,63);

scanf("%c",&resp);system("cls");

fflush(stdin);

while(resp=='s' || resp=='S'){

juegos_tot++;

printf("\n\n\t%cQu%cn%cmero eliges, del 1 al

6\n\t",168,130,163);

scanf("%d",&apuesta);

while(apuesta<=0||apuesta>6){

printf("\n\n\tError, no existe ese n%cmero para la

epuesta.\n\n\tIngresa de nuevo un

n%cmero entre 1 y 6",163,163);

scanf("%d",&apuesta);

}

printf("\n\n\tListo %s, estoy a punto de lanzar mi dado

virtual.\n\t",nombre);

system("pause"); fflush(stdin);

srand((unsigned)time(NULL));

dado=rand()%6+1;

Page 30: Practica 11 Laboratorio de Computación para Ingenieros FI

30

if(apuesta==dado){

printf("\n\n\tFelicidades %s, ganaste esta

partida, call%c %d.",nombre,162,dado);

gano++;

}

else

printf("\n\n\tLo siento mucho %s, has perdido,

call%c %d.",nombre,162,dado);

printf("\n\n\t%s, %cDeseas lanzar de

nuevo%c(s/n)\n\t",nombre,168,63);

scanf("%c",&resp);system("cls");

fflush(stdin);

}

perdio=juegos_tot-gano;

ganancias_porc=gano*100/juegos_tot;

perdidas_porc=100-ganancias_porc;

system("cls");

printf("\n\n\tAl finalizar el juego, %s gan%c %d juegos de %d,

que representa un %%%.2f del total\n\n\t, perdi%c %d

que es un

%%%.2f\n\n\t",nombre,162,gano,juegos_tot,ganancias_p

orc,162,perdio,perdidas_porc);

printf("\n\n\t");

system("pause");

}

Page 31: Practica 11 Laboratorio de Computación para Ingenieros FI

31

Page 32: Practica 11 Laboratorio de Computación para Ingenieros FI

32

APRENDIZAJE INDIVIDUAL

Alba Hernández Jorge Iván:

En estas prácticas, se me dificultó un poco la escritura de los ciclos anidados.

Logré apreciar que a estas alturas ya tenemos muchas herramientas para realizar

restricciones a nuestros programas y obligar al usuario a darnos datos correctos.

Fue una práctica con algunos ejercicios muy difíciles (como el cajero automático,

el lanzamiento del dado y los triángulos de números) y otros muy sencillos (como

los números factoriales o la suma del 1 al 100).

García Márquez Stephanie Verónica.

Esta práctica en lo personal fue complicada para mí, ya que tuve muchos

problemas con los contadores, en ocasiones el compilador arrojaba datos

incorrectos y en ocasiones estaba bien, además practique los ciclos anidados, los

cuales desde mi punto de vista se debe tener muy en claro la sintaxis , además de

las condicionantes. Sin embargo es cuestión de practicar y no desesperarse.

Gómez López Cristian:

En este tema pude hacer programas que incluyen “iteraciones”, asi como

identificar que instrucciones debemos usar en cada tipo de casos.