Autor Tema: Bucle for con dos variables Cambiar flujo en ciclos C break lenguajeC CU00544F  (Leído 8522 veces)

Dimitar Stefanov

  • Experto
  • *****
  • Mensajes: 598
    • Ver Perfil
Buenos días. Dejo una posible solución de los ejercicios de la entrega CU00544F del curso lenguaje de programación C desde cero.

Citar
EJERCICIO Nº 1

Estudia el siguiente código y responde a las preguntas:

Código: [Seleccionar]
#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;
}

Citar
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.

Citar
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.

Citar
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.

Citar
EJERCICIO Nº 2

Estudia el siguiente código y responde a las preguntas:

Código: [Seleccionar]
#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;
}

Citar
a) ¿Para qué crees que sirve este código?

Es para calcular los 4 números entrados entre sí.

Citar
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;"

Citar
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.

Citar
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.

Citar
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.
« Última modificación: 11 de Julio 2016, 22:28 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas ejercicio bien

En el bucle for for(i=1,product=1;i<=4;++i) se inicializan dos variables al comenzar el bucle, la variable i y la variable product

Explicación sobre el bucle for extraño: https://www.aprenderaprogramar.com/foros/index.php?topic=3827.0

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".