practica 11 laboratorio de computación para ingenieros fi
DESCRIPTION
Reporte con ejercicios resueltos de práctica 10 de laboratorio de computación para ingenieros. Facultad de Ingeniería UNAM.TRANSCRIPT
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.
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.
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)
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.
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.
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();
}
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");
}
8
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');
}
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");
}
11
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");
}
13
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");
}
15
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
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");
}
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");
}
19
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();
}
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
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;
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');
}
24
25
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
27
28
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;
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");
}
31
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.