Buenas tardes. Dejo una posible solución de los ejercicios contemplados en la entrega CU00546F del tutorial de programación en lenguaje C desde cero.
EJERCICIO Nº1
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/* C program to demonstrate the working of goto statement. */
int main(){
float num,average,sum;
int i,n;
printf("Maximum no. of inputs: ");
scanf("%d",&n);
for(i=1;i<=n;++i){
printf("Enter n%d: ",i);
scanf("%f",&num);
if(num<0.0)
goto jump; /* control of the program with goto */
sum=sum+num;
}
jump:
average=sum/(i-1);
printf("Average: %.2f",average);
return 0;
}
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve este programa? ¿cuál será el resultado del programa si introducimos los números 10, 5 y 2? ¿cuál será el resultado del programa si introducimos los números 10, -5 y 2?
Sirve para calcular la suma de los números entrados por el usuario entre el primer número entrado. Si se entra algún número menor que "0.0" no se tomará por puesto y se saldrá del bucle debido a la instrucción "goto". Si entramos 10,5 y 2 nos imprimirá una media de "5.67". Si entramos 10, -5 y 2 nos dará un resultado de "10.00" porque la instrucción "goto" hará que salgamos del bucle y no tendremos opción de entrar "2".
b) Ejecutando el código ¿cuál será el resultado del programa si introducimos los números 10, 5 y 2? ¿cuál será el resultado del programa si introducimos los números 10, -5 y 2?
Son los mismos resultados que hemos descrito en el apartado a).
c) ¿Qué signficado tiene ++i en el contexto de este programa?
Que se incrementa la variable "i" con una unidad. Es lo mismo poner "++i" que "i++" que "i=i+1" que "i+1=i".
d) ¿Es equivalente escribir if( num<0.0) goto jump; y if( num < 0.0) { goto jump; } ?
Sí, es lo mismo. Las dos formas son legales.
e) Haz que el código ofrezca los mismos resultados evitando el uso de goto.
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/* C program to demonstrate the working of goto statement. */
int main(){
float num,average,sum;
int i,n;
printf("Maximum no. of inputs: ");
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;
}
jump:
average=sum/(i-1);
printf("Average: %.2f",average);
return 0;
}
EJERCICIO Nº2
Estudia el siguiente código y responde a las preguntas:
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/* C program to demonstrate the working of goto statement. */
int main() {
int age;
Vote:
printf("you are eligible for voting");
NoVote:
printf("you are not eligible to vote");
printf("Enter you age:");
scanf("%d", &age);
if(age>=18)
goto Vote;
else
goto NoVote;
return 0;
}
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve este programa? ¿cuál será el resultado del programa si introducimos el número 22?
A simple vista tendría que servir para responder según que edad entra el usuario si podría votar o no. Pero, nada más ejecutar el programa, me imprime los dos "printf" sin haber entrado ningún dato por consola. Supongo que se debe a que desde que se impartió el curso hasta hoy en día ha cambiado la versión del IDE "Code::Blocks" y no responde de la misma manera con la instrucción "goto".
b) Crea otro programa equivalente (que produzca los mismos resultados) sin hacer uso de la sentencia goto.
#include <stdio.h>
#include <stdlib.h>
// Curso de programación C aprenderaprogramar.com
/* C program to demonstrate the working of goto statement. */
int main() {
int age;
printf("Enter you age:");
scanf("%d", &age);
if(age>=18){
printf("you are eligible for voting");
}else{
printf("you are not eligible to vote");
}
return 0;
}
Gracias.