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, 00:27

Título: Finalizar programas en C. Cambiar flujo bucles break continue LenguajeC CU00544F
Publicado por: Pandemia en 25 de Junio 2016, 00:27
Hola, dejo una posible solución al ejercicio CU00544F del curso autoevaluable online de programación en lenguaje C.

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?

Programa que nos dice el promedio de n números.

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?

Cuando introducimos un número negativo, el program solo devuelve el resultado de la media de los numeros introducido, menos el negativo.  Esto ocurre por la línea de código:

Código: [Seleccionar]
if(num<0.0) break;
Citar
c) ¿Qué signficado tiene %.2f dentro de este programa?

Se imprime una variable tipo float con 2 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?]

Este programa nos dice el producto de 4 números que piden al usuario.
Ejemplo.  Si introducimos 5,8,6,9,  nos devolverá 5*8*6*9. 

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?

Solo multiplica los números distintos de 0. Esto es así proeque en el if se comprueba si se introduce 0 como valor, y si es así, usamos continue para que no multiplique 0 por la variable donde hemos ido almacenando el valor de las multiplicaciones anteriores.

Citar
c) ¿Es legal escribir un if sin los corchetes { … }?


No

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?

Que el producto nos devuelve 1, porque es el valor que le hemos asignado a la variable product anteriormente.


Título: Re:Finalizar programas en C. Cambiar flujo bucles break continue LenguajeC CU00544F
Publicado por: César Krall en 29 de Junio 2016, 22:01
Hola!

Pedirte que si usas un color sea marrón o similar, porque el naranja se ve mal.

Bien! La única cosa que veo a comentar es la pregunta ¿Es legal escribir un if sin los corchetes { … }?

Esto ya se ha comentado en otro hilo, pero te copio para que lo puedas leer aquí directamente.

Considerar algo legal o no legal viene dado básicamente por la especificación oficial del lenguaje, es decir, los criterios que definieron los creadores del lenguaje. Y también por el comportamiento del compilador, es decir, si el compilador acepta o no una expresión.

Puede ocurrir que el compilador acepte algo y no sea legal. O puede ocurrir que algo supuestamente legal según la especificación del lenguaje no sea aceptado por un determinado compilador.

En C sí es legal escribir un if sin los corchetes. Es decir, es algo que los creadores del lenguaje especificaron que sí era posible, y es admitido por los compiladores. Lo que sí solemos decir es que no es recomendable usar if sin los corchetes, porque así evitamos confusiones. Cuando se usa un if sin corchetes es como si existiera un corchete únicamente para la siguiente instrucción después del if.

Esto se comenta en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=925:if-then-else-en-c-estructura-condicional-decision-o-bifurcacion-sintaxis-ejemplos-and-or-igual-que-cu00529f&catid=82:curso-basico-programacion-lenguaje-c-desde-cero&Itemid=210

Saludos!
Título: Re:Finalizar programas en C. Cambiar flujo bucles break continue LenguajeC CU00544F
Publicado por: Pandemia en 29 de Junio 2016, 23:17
ok, cambiaré el color y gracias por la corrección y por tu tiempo, la explicación me ha servido de mucho, me ha aclarado, gracias.

Saludos.