Buenos días. Dejo una posible solución de los ejercicios de la entrega CU00544F del curso lenguaje de programación C desde cero.
EJERCICIO Nº 1
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
// Ejercicios aprenderaprogramar.com
int main(){
float num,average,sum;
int i,n;
printf("Maximum no. of inputs\n");
scanf("%d",&n);
for(i=1;i<=n;++i){
printf("Enter n%d: ",i);
scanf("%f",&num);
if(num<0.0)
break;
sum=sum+num;
}
average=sum/(i-1);
printf("Average=%.2f",average);
return 0;
}
a) ¿Para qué crees que sirve este código?
Este código sirve para calcular la media de los números positivos entrados por el usuario.
b) Qué ocurre si introducimos como maximum no. of inputs 8 e introducimos los números 1.5, 12.5 y -1 ¿Por qué ocurre eso? ¿Qué significado tiene lo que se muestra por pantalla?
Al entrar el número negativo se cambiará el flujo del programa. Se saldrá del bucle porque tenemos establecida la condicional: "if(num<0.0)" con la consiguiente salida del bucle mediante la instrucción: "break;"
Por pantalla sólo nos saldra la media de los números positivos antes de la entrada del número negativo.
c) ¿Qué signficado tiene %.2f dentro de este programa?
Que se imprima por pantalla un número float con precisión sólo dos decimales.
EJERCICIO Nº 2
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
// Ejercicios aprenderaprogramar.com
int main(){
int i,num,product;
for(i=1,product=1;i<=4;++i){
printf("Enter num%d:",i);
scanf("%d",&num);
if(num==0)
continue;
product*=num;
}
printf("product=%d",product);
return 0;
}
a) ¿Para qué crees que sirve este código?
Es para calcular los 4 números entrados entre sí.
b) Qué ocurre si introducimos como números 3, 0, -5, 2 ¿Por qué ocurre eso? ¿Qué significado tiene lo que se muestra por pantalla?
El 0 se considera como no entrado. Ocurre porque tenemos establecida la condicional: "if(num==0)" y si se cumple dicha condicional tenemos establecida la instrucción: "continue;"
Con esta instrucción, insertada normalmente tras evaluar una condición, se produce el incremento automático de la variable índice y la vuelta al comienzo del bucle sin terminar la ejecución del mismo.
El significado es que si se haya entrado un número igual a 0 se tiene como no introducido y el código sólo multiplica los números entre sí que sean diferentes a 0.
c) ¿Es legal escribir un if sin los corchetes { … }?
Sí. La condicional sólo afecta a la instrucción establecida inmediatamente después del if.
d) Qué ocurre si introducimos como números 0, 0, 0, 0 ¿Por qué ocurre eso? ¿Qué significado tiene lo que se muestra por pantalla?
Es como si no escribieramos nada. Se imprimirá 1 porque la variable "producto" tiene un valor inicializado igual a 1 y la variable "num" no está inicializada. Como la variable "num" no está inicializada y tenemos la instrucción: "product*=num;" es como poner:"1=1*null" lo que nos devuelve 1.
PD: Tenía una duda. Se me ha olvidado cómo se interpreta una definición del bucle for de la siguiente manera: "for(i=1,product=1;i<=4;++i)". Sé que el primer parámetro es la variable controladora a la que se le asigna una valor, el segundo parámetro es la condicional que nos lleva a la salida del bucle y la tercera es la incrementación de la variable controladora. Pero ¿qué ocurría cuando el primer parámetro está compuesto por dos variables? Sé que estaba explicado en alguna entrega, pero no me acuerdo si era en este curso o en el de JavaScript. Agradecería si alguien me vuelva a referscar la memoria.
Gracias.