Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pandemia en 25 de Junio 2016, 21:03
-
Hola, dejo una posible solución al ejercicio CU00546F del tutorial de programación en lenguaje C.
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?
Este programa calcula la media de n números enteros. Sumará esos tres números y el resultado lo dividirá entre tres, y mostrará el resultado por pantalla.
Que calculará la media de solo un número, en este caso el 10, y dará como resultado 10, porque el goto hace que el programa salga del for, sin que se pueda seguir introduciendo datos después de introducir un número negativo.
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?
Que "average = 5,67" por lo que se explica en la pregunta anterior.
Que average vale 10 por lo que se explica en la pregunta anterior.
c) ¿Qué signficado tiene ++i en el contexto de este programa?
Al igual que si usamos i++, se incrementa 1 a i.
d) ¿Es equivalente escribir if( num<0.0) goto jump; y if( num < 0.0) { goto jump; } ?
si
e) Haz que el código ofrezca los mismos resultados evitando el uso de goto.
#include <stdio.h>
#include <stdlib.h>
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 || num > 0)
{
sum=sum+num;
}
}
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?
Para comprobar si se tiene la mayoría de edad para votar.
se imprimirá los tres print por pantalla y preguntará otra vez lo mismo, y dependiendo si tienes más o menos de 18, se ejecutará el primer print o el segundo, haciendo una especie de bucle infinito del cual no saldrá nunca, según está estructurado.
b) Crea otro programa equivalente (que produzca los mismos resultados) sin hacer uso de la sentencia goto
#include <stdio.h>
#include <stdlib.h>
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;
}
Saludos. ;D
-
Buenas noches,
En el ejercicio 1 apartado d), si introduces 4, 8, -2, 15 ¿obtienes el mismo resultado con el código inicial que con el código que tú has propuesto?
En el ejercicio 2, si tenemos que crear un programa que haga lo mismo, ¿hace lo mismo cuando ejecutas el programa inicial y el que tú has propuesto?
Saludos.
-
Buenas tardes, gracias por contestar Mario, y por corregir.
En el primer ejercicio apartado d) en el codigo inicial solo permite la entrada de tres números y en mi código permite la entrada de más números.
En el segundo ejercicio creo que sí hacen lo mismo los dos códigos, o eso espero.
Saludos.
-
Hola!
Al probar el ejercicio original la pregunta se repite continuamente, aunque no me funciona bien ya que aparecen los mensajes sin el orden debido
Al probar el código de Pandemia sí aparece el mensaje correcto, pero la pregunta sólo se hace una vez y no se repite
Saludos!