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
requieraniteraciones.
programas
que
involucren
procesos
que
1
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.
2
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
14641
1331
121
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)
3
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.
4
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.
5
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("nntEste programa eleba un numero a una potencia.nntIngresa un
numero:nnt");
scanf("%d", &num);
printf ("nntDame la potencia a la que quieres elevar el numeronnt");
scanf("%d",&potencia);
num_elevado=num;
for(i=2;i<=potencia;i++){
num_elevado*=num;
}
printf("nntEl
resultado
de
elevar
%d
a
la
%d
es
%dnnt",num,potencia,num_elevado);
fflush(stdin); getch();
}
6
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("nntPara mostrar los valores de temperatura en un intervado, nntingresa la
temperatura inicial en grados centigrados:nnt ");
scanf("%d",&inicio);
printf("nntAhora ingresa la temperatua final en grados centigrados:nnt");
scanf("%d",&fin);
if(inicio>fin){
temp=inicio;
inicio=fin;
fin=temp;
}
printf("nntIngresa el intervalo con el que se se mostraran los resultados:nnt");
scanf("%d",&inter);
for(i=inicio;i<=fin;i+=inter){
printf("nnt%d%cC = %.2f,%cF",i, 248,far=(i*9/5)+32,248);
}
printf("nnt");
system("pause");
}
7
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("nntPara saber si un numero es primo, ingrese el
numro:nt");
scanf("%d",&num);fflush(stdin);
primo=0;
for(i=2;i<num;i++){
if(num%i==0)
primo=1;
}
if(primo==1)
printf("nntEl numero %d no es primo",num);
else
printf("nntEl numero %d es primo",num);
printf("nnt%cDesea saber si otro numero es
primo%c(s/n)",168,63);
scanf("%c",&op); fflush(stdin);
}while(op=='s'||op=='S');
}
9
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("ttt Programa que realiza una piramide de numerosnn");
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("nnt");
system("pause");
}
10
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("nntPara conocer los valores que toma sen(x) en un intervalo ntdonde
x=radianes,nntIngresa el valor inicial: ");
scanf("%f",&inicio);
printf("nntAhora el valor final: ");
scanf("%f",&fin);
printf("nntAhora 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("nntsen(%f)=%.4f",x,seno);
}
printf("nnt");
system("pause");
}
12
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("nntPara conocer los valores que toma sen(x) en un intervalo
ntdonde x=radianes,nntIngresa el valor inicial: ");
scanf("%f",&inicio);
printf("nntAhora el valor final: ");
scanf("%f",&fin);
printf("nntAhora 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("nntsen(%f)=%.4f",x,seno);
}
printf("nnt");
system("pause");
}
14
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
14641
1331
121
1
16
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("nntPara obtener e factorial de un numero,nntIngrese un numero mayor a
cero: ");
scanf("%d",&num);
while (num<=0){
printf("nnt%d no es mayor a cero, ontente de nuevo: ",num);
scanf("%d",&num);
}
printf("nnt%d%c= 1",num,33);
for(i=2;i<=num;i++){
fac*=i;
printf("%c%d",42,i);
}
printf(" =%dnnt",fac);
system("pause");
}
17
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("nntPara conocer los valores que toma sen(x) en un intervalo
ntdonde x=radianes,nntIngresa el valor inicial: ");
scanf("%f",&inicio);
printf("nntAhora el valor final: ");
scanf("%f",&fin);
printf("nntAhora 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("nntsen(%.4lf)=%.4f",x,seno);
}
printf("nnt");
system("pause");
}
18
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("tttSUMA NUMEROS DEL 1 AL 100n");
for(i=0;i<=99;i++){
suma=i+1;
printf("nt%d+1=%d",i,suma);
}
getch();
}
20
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("nntBuendia, has entrado a tu cuenta de TRANSIACCIONES,nntel banco que te
ofrese los mejores rendimientos. nnt");
do{
printf("nnt%cQu%c desea hacer%c:",168,130,63);
printf("nnttA) Consulta de saldonttB) DepositonttC) Retiro en
efectivonttD) Compra de tiempo airenttE)
salirnntIngreseopci%cn:nnt",162);
op=getch();
fflush(stdin);
switch(op){
case 'a': case 'A':
printf("nntSu saldo es de: %c%.2fnntPresione
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("nntUste acaba de
dopisitar: %c%d, Ahora su
21
22. saldo es de
%c%.2fnntPresione un
boton para
continuar",36,deposito,36,sa
ldo);
getch(); fflush(stdin);
}
else
printf("nntError...");
getch(); fflush(stdin);
break;
case'c': case'C':
printf("nntIngrese cantidad que desea retirar
(deben ser multiplos de 100): ");
scanf("%d",&retiro);
if (retiro>=0&&retiro%100==0){
while(retiro>saldo){
printf("nntNo tiene
suficiente dinero en la cuenta para retirar %c%dnntIngrese otra
cantidad: ",32,retiro);
scanf("%d",&retiro);
}
saldo=saldo-retiro;
printf("nntAcaba de retirar
%c%d, su saldo ahora es de %c%.2fnntPresione un
boton para continuar",32,retiro,32,saldo);
getch(); fflush(stdin);
}
else{
printf("nntError...");
getch(); fflush(stdin);}
break;
case'd': case 'D':
printf("nntIngrese monto de tiempo aire que
desea comprar: ");
scanf("%f",&tiempo);
if(tiempo>0){
if(tiempo<=saldo){
saldo-=tiempo;
22
23. printf("nntAhora
ingrese numero de telefono:");
scanf("%d",&numero);
printf("nntRecarga en
proceso,nnten breve resiviras un mensaje de
confirmacionnntPresione un boton para continuar");
getch(); fflush(stdin);
}
else{
printf("nntNo tiene suficiente
dinero en la cuenta");
printf("nntnntPresione un boton para continuar");
getch(); fflush(stdin);
}
}
else{
printf("nntError...");
getch(); fflush(stdin);
}
break;
case 'e': case'E':
printf("nntHa elegido salir, recuerde retirar
tarjeta al finalizar...nntGracias por su
preferencia.");
getch(); fflush(stdin);
break;
default:
printf("Error...");
}
system("cls");
} while (op!='e'&&op!='E');
}
23
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
26
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("nnt Hola, ingresa tu nombre:nt");
gets(nombre); system("cls");fflush(stdin);
printf("nnt%s,
este
es
un
simulador
lanzamiento
de
dados.nnt%cDeseasparticipar%c (s/n)",nombre,168,63);
scanf("%c",&resp);system("cls");
fflush(stdin);
while(resp=='s' || resp=='S'){
juegos_tot++;
printf("nnt%cQu%cn%cmero
eliges,
del
1
al
6nt",168,130,163);
scanf("%d",&apuesta);
while(apuesta<=0||apuesta>6){
printf("nntError, no existe ese n%cmero para la
epuesta.nntIngresa
de
nuevo
un
n%cmero entre 1 y 6",163,163);
scanf("%d",&apuesta);
}
printf("nntListo %s, estoy a punto de lanzar mi dado
virtual.nt",nombre);
system("pause"); fflush(stdin);
srand((unsigned)time(NULL));
dado=rand()%6+1;
29
30. if(apuesta==dado){
printf("nntFelicidades %s, ganaste esta
partida, call%c %d.",nombre,162,dado);
gano++;
}
else
printf("nntLo siento mucho %s, has perdido,
call%c %d.",nombre,162,dado);
printf("nnt%s,
%cDeseas
lanzar
de
nuevo%c(s/n)nt",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("nntAl finalizar el juego, %s gan%c %d juegos de %d,
que representa un %%%.2f del totalnnt, perdi%c %d
que
es
un
%%%.2fnnt",nombre,162,gano,juegos_tot,ganancias_p
orc,162,perdio,perdidas_porc);
printf("nnt");
system("pause");
}
30
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.
32