Autor Tema: Ambito de variables en C. Globales y locales. undeclared LenguajeC CU00548C.  (Leído 2772 veces)

Pandemia

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 255
    • Ver Perfil
Buenas amigos aquí os dejo una posible solución al ejercicio CU00548F del curso de iniciación a la programación con C.

Citar
EJERCICIO

Estudia el código que se muestra más abajo y responde a las preguntas:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int check_prime(int num);

int main(){
   int n1,n2,i,flag;
   printf("Enter two numbers(intervals): ");
   scanf("%d %d",&n1, &n2);
   printf("Prime numbers between %d and %d are: ", n1, n2);
   for(i=n1+1;i<n2;++i)
   {
      flag=check_prime(i);
      if(flag==0)
         printf("%d ",i);
   }
   return 0;
}

int check_prime(int num) {
   int j,flag=0;
   for(j=2;j<=num/2;++j){
        if(num%j==0){
            flag=1;
            break;
        }
   }
   return flag; // Ejercicios aprenderaprogramar.com
}

Citar
a) Sin ejecutar el código (sólo pensando) responde: ¿para qué sirve la función check_prime? ¿Qué resultado devolverá si le pasamos el número 4? ¿Por qué?

Para mostrar una serie de números primos.
4 12 = muestra por pantalla los números primos 5 7 11.
Porque gracias a la función int check_prime, podemos saber la secuencia de números primos entre 4 y 12.


Citar
b) En dicha función se usa la siguiente definición de bucle: for(j=2;j<=num/2;++j) ¿Por qué crees que el bucle tiene un valor inicial 2? ¿Por qué crees que el bucle tiene un valor final num/2?

Porque  al no ser primo el número 1, hay que iniciar el bucle en 2 que si lo es.
Para dividir num por 2 y sacar los números primos.


Citar
c) ¿La variable flag que se usa en el main es la misma que se usa en la función check_prime? ¿Es posible declarar y usar dos variables con el mismo nombre en la función main? ¿Y declarar y usar dos variables con el mismo nombre en la función main y otra función? ¿Por qué?.

No.
Si.
Porque en la función main la pondríamos como variable global y en la otra función como variable local.


Citar
d) Crea una tabla de variables del programa que conste de las siguientes columnas: nombre de variable, ámbito, utilidad. Por ejemplo la variable i tiene nombre de variable i, ámbito la función main, y utilidad servir como índice en el bucle for del main.

i tiene nombre variable i, ámbito la función main, y utilidad de servir como índice en el bucle for del main.
n1 tiene nombre variable n1, ámbito la función main, y utilidad entrada de número por el usuario.
n2 tiene nombre variable n2, ámbito la función main, y utilidad entrada de número por el usuario.
flag tiene nombre variable flag, ámbito la función main, y utilidad es una bandera o "algo" que te indica el estado de X variable, proceso, flujo... lo que sea que te diga como esta el estado de algo del main.

Función int check_prime(int num):

j tiene nombre variable j, ámbito la función int check_prime(int num) , y utilidad de servir como índice en el bucle for del  int check_prime(int num).
flag tiene nombre variable flag, ámbito la función int check_prime(int num), y utilidad es una bandera o "algo" que te indica el estado de X variable, proceso, flujo... lo que sea que te diga como esta el estado de algo del int check_prime(int num).


Citar
e) Si se introducen como números 11 y 30 ¿Son evaluados 11 y 30? ¿Qué resultado se obtiene? ¿Por qué?

Si.
13 17 19 23 29.
 
« Última modificación: 03 de Julio 2016, 21:49 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola! No veo esta pregunta bien respondida

e) Si se introducen como números 11 y 30 ¿Son evaluados 11 y 30? ¿Qué resultado se obtiene? ¿Por qué?

Has respondido que 11 y 30 son evaluados (para saber si son primos), sin embargo 11 es primo y no aparece en los resultados.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Pandemia

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 255
    • Ver Perfil
Buenas tardes Cesar, tienes razón fallo mio por no fijarme, las prisas ha veces te juegan malas pasadas.

Repito la respuesta e):

No.

13, 17, 19, 23,  29.

Porque solo se evaluaran los números comprendidos  dentro del contador del primer bucle for i = n1+1 hasta i<n2

Saludos y gracias por vuestro tiempo puesto que sin el nada de esto seria posible.  :D

 

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