Problema al devolver un valor desde una funcion
Hola todos/as tengo un pequeño problema con este programa porque la funcion que analiza si un numero es primo o no esta bien escrita pero no devuelve bien el valor (0 ó 1) a la funcion main(). Espero que alguien pueda ayudarme. Muchas gracias
CODIGO FUENTE
//Autor: Rafael Enriquez Herrador
//Asignatura: Metodologia y Tecnologia de la Programacion
//Titulo: Practica 2, Ejercicio1
//Fecha:. 20-11-2005
//Version: 0.1
/* Programa que tome un numero y diga si es primo o no mediante el uso de una funcion que en este caso intetaremos
que sea recursiva */
#include <stdio.h>
#include <stdlib.h>
//Declaracion de la funcion EsPrimo()
int EsPrimo(int num, int i);
//Funcion main
int main() //Funcion principal
{
//Declaracion de variables
int n, aux, cont;
aux = 1;
//Entrada de datos
printf("Introduzca el numero a analizar si es primo o no: ");
scanf("%i", &n);
cont = n/2;
aux = EsPrimo(n, cont);
printf("nEl valor de la funcion EsPrimo() es %in", aux);
//Utilizamos la funcion EsPrimo() para comprobar si el numero es primo o no
if (aux == 1)
{
printf("El numero ES primon");
}
else
{
printf("El numero NO ES primon");
}
return 0;
}
//Definicion de la funcion EsPrimo()
int EsPrimo (int num, int i) //Funcion que analiza si un numero es primo o no
{
//Declaracion de variables
//int bool = 0;
//Estructura de seleccion para la funcion recursiva
if (i == 1) //Caso base de la recursion
{
//bool = 1;
printf("El numero %i ES primon", num);
//printf("bool = %in", bool);
printf("%in", i);
return 1; //Devuelve 1 ya que no ha encontrado divisores y el numero es primo
}
else
{
if (num % i == 0) //En este caso el numero tiene un divisor antes de llegar
// al 1 por lo tanto no es primo
{
//printf("bool = %in", bool);
printf ("El numero %i NO ES primon", num);
return 0; //Devuelve que el numero no es primo
}
else //Caso recursivo
{
printf("%in", i);
EsPrimo(num, i - 1); //Realiza la misma funcion pero decrementando el contador
}
}
}
CODIGO FUENTE
//Autor: Rafael Enriquez Herrador
//Asignatura: Metodologia y Tecnologia de la Programacion
//Titulo: Practica 2, Ejercicio1
//Fecha:. 20-11-2005
//Version: 0.1
/* Programa que tome un numero y diga si es primo o no mediante el uso de una funcion que en este caso intetaremos
que sea recursiva */
#include <stdio.h>
#include <stdlib.h>
//Declaracion de la funcion EsPrimo()
int EsPrimo(int num, int i);
//Funcion main
int main() //Funcion principal
{
//Declaracion de variables
int n, aux, cont;
aux = 1;
//Entrada de datos
printf("Introduzca el numero a analizar si es primo o no: ");
scanf("%i", &n);
cont = n/2;
aux = EsPrimo(n, cont);
printf("nEl valor de la funcion EsPrimo() es %in", aux);
//Utilizamos la funcion EsPrimo() para comprobar si el numero es primo o no
if (aux == 1)
{
printf("El numero ES primon");
}
else
{
printf("El numero NO ES primon");
}
return 0;
}
//Definicion de la funcion EsPrimo()
int EsPrimo (int num, int i) //Funcion que analiza si un numero es primo o no
{
//Declaracion de variables
//int bool = 0;
//Estructura de seleccion para la funcion recursiva
if (i == 1) //Caso base de la recursion
{
//bool = 1;
printf("El numero %i ES primon", num);
//printf("bool = %in", bool);
printf("%in", i);
return 1; //Devuelve 1 ya que no ha encontrado divisores y el numero es primo
}
else
{
if (num % i == 0) //En este caso el numero tiene un divisor antes de llegar
// al 1 por lo tanto no es primo
{
//printf("bool = %in", bool);
printf ("El numero %i NO ES primon", num);
return 0; //Devuelve que el numero no es primo
}
else //Caso recursivo
{
printf("%in", i);
EsPrimo(num, i - 1); //Realiza la misma funcion pero decrementando el contador
}
}
}
Hola:
Veo que te faltan return. En el caso recursivo supongo que debes poner
return EsPrimo(num,i-1);
Se bueno.
Veo que te faltan return. En el caso recursivo supongo que debes poner
return EsPrimo(num,i-1);
Se bueno.
