Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2011, 12:34
Bladsmickey
 
Fecha de Ingreso: enero-2011
Mensajes: 33
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Problema de logica con un For....

Saludos, les presento el siguiente ejercicio, El programa consiste en, dependiendo de la opcion que pulse el usuario, Sacar una lista de numeros primos o el factorial de un numero, El programa corre perfectamente:


#include<stdio.h>
#include<stdlib.h>
#undef abs
#define p printf
#define s scanf

int primos(int c)
{
int a,j,pr;
pr=1;
for(a=2 ; a<=c ; a++)
{
for(j=2 ; j<=a/2 ; j++)
if((a%j)==0)
pr=0;
if(pr)
p("\n%d\n",a);
pr=1;
}
}


long int factorial(long int num1)
{
if((num1==0) || (num1==1))
return 1;
else
return num1*factorial(num1-1);
}

main()
{
int op,num2;
long int num1;
do{
p("Introduzca Un Numero: \n");
s("%d",&num1);
if(num1<0){
printf("Error Debe de ser un numero Mayor a 0\n\n"); }
}while(num1<0);
num2=abs(num1);

do{
p("\n----Que desea hacer?---\n");
p("1. Serie de numeros primos del 1 al %d\n",num1);
p("2. Sacar Factorial de %d\n",num1);
p("3. Salir\n");
s("%d",&op);

switch(op)
{
case 1:
p("Esa Fue La Serie De Numeros Primos Del 1 al %d\n\n", num1, primos(num1));
system("pause");
case 2:
if(num2>50)
p("El valor es muy grande");
else
p("El factorial es: %d\n",factorial(num1));
}
}while(op!=3);
}

El problema de logica que tengo, es en cuanto a la primera funcion(Primos), El 2do for nunca se cumple, y ademas de eso, poniendo como caso que el usuario introdujera 50, el 2do for simplemente llegaria a 25 y alli se detendria, ayuda?... Como dije, el programa corre perfectamente y hace lo que debe, pero no entiendo como se ejecuta esa funcion...