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 27 de Junio 2016, 21:33
-
Buenas amigos aquí os dejo una posible solución al ejercicio CU00548F del curso de iniciación a la programación con C.
EJERCICIO
Estudia el código que se muestra más abajo y responde a las preguntas:
#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
}
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.
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.
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.
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).
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.
-
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!
-
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