Mi programa se compila sin errores y sin warnings pero al correrlo no funciona, que pasa?

mi programa se compila sin errores y sin warnings pero al correrlo cuando pongo la opcion se traba y deja de funcionar, que pasa?

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

float potencia (int x,int n)
{
float res;
int c=1;
res=x;
while (c<n)
{
res=res*x;
c++;
}
return res;
}
float sumatoria (int n)
{
float res;
int c=1;
res=0;
while (c<=n)
{
res=res+(sqrt((7/5)*potencia(c,2)))/((sqrt(potencia(c,5)- potencia(c,2)))+10);
c++;
}
return res;
}
float serie (int n)
{
float res;
int c=1;
res=0;
while (c<=n)
{
if (c/2==0)
res=res-(c+20);
else
res=res+(c+20);
}
c++;
return res;
}
float aproximacion_pi (long int N)
{
float res;
int c=1;
res=0;
while (c>=N)
{
res=res+(1/(potencia (c*2,2)));
c++;
}
(sqrt(24*res));

return res;

}
void fibonacci()
{
int f0=0,f1=1,fn,c=1;
float n;

if (n == 0) printf("0");
if (n == 1) printf ("0 1");
else
if (n>= 2) {
printf("0 1");
while (c <= n) {
fn = f0+f1;
printf("%i",fn);
f0=f1;
f1=fn;
c++;
}
}

}
int main ()
{
int x, n, op;
long int N;
float res;
printf ("\n\t Funciones \t\n");
printf ("\n\t 1. Potencia \t\n");
printf ("\n\t 2. Evaluar sumatoria \t\n");
printf ("\n\t 3. Serie \t\n");
printf ("\n\t 4. Aproximacion de PI \t\n");
printf ("\n\t 5. Fibonacci \t\n");
printf ("\n\t 6. Salir \t\n");
printf ("\n\t Elegir una opcion \t\n");
scanf ("%i",op);
switch (op)
{
case 1:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",n);
printf ("\n\t Proporcionar el valor de x \t\n");
scanf ("%i",x);
res= potencia (x,n);
printf ("\n\t La potencia es %f",res);
break;
case 2:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",n);
res= sumatoria (n);
printf ("\n\t La sumatoria es %f \t\n",res);
break;
case 3:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",n);
res= serie (n);
printf ("\n\t laserie de n es %f \t\n",res);
break;
case 4:
printf ("\n\t Proporcionar el valor de N \t\n");
scanf ("%i",N);
res= aproximacion_pi (N);
printf ("\n\t La aproximacion de pi de N es %f \t\n",res);
break;
case 5:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",n);
fibonacci ();
break;
case 6:
printf ("\n\n\t Salir \n\n\t");
break;
default:
printf ("\n\t Opcion no valida, ERROR\n\t");
break;
}
system("PAUSE");
}

1 respuesta

Respuesta
1

Andrea Flores!

Son incontables los programas que no tienen errores de compilación pero los tienen a la hora de ejecutarse.

Se todas formas lo que le pasa al tuyo no lo entiendo, no lo había visto nunca.

El fallo esta en la orden

Scanf("%i", op)

Ya que he quitado todo lo demás dejando solo eso y el system("PAUSE") y se saltaba esta orden, señal de una salida anormal del programa.

Lo que he hecho y funciona pero mejor que pruebes tú si hace lo que tiene que hecer es cambiarla por

scanf("%i", &op)

Y también era visto que era necesario hacerloen otro sitio, de modo que he puesto el & en todos los scanf.

Prueba no sea que por hacer eso fuencione algo de una forma que no querías.

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

float potencia (int x,int n)
{
float res;
int c=1;
res=x;
while (c<n)
{
res=res*x;
c++;
}
return res;
}
float sumatoria (int n)
{
float res;
int c=1;
res=0;
while (c<=n)
{
res=res+(sqrt((7/5)*potencia(c,2)))/((sqrt(potencia(c,5)- potencia(c,2)))+10);
c++;
}
return res;
}
float serie (int n)
{
float res;
int c=1;
res=0;
while (c<=n)
{
if (c/2==0)
res=res-(c+20);
else
res=res+(c+20);
}
c++;
return res;
}
float aproximacion_pi (long int N)
{
float res;
int c=1;
res=0;
while (c>=N)
{
res=res+(1/(potencia (c*2,2)));
c++;
}
(sqrt(24*res));

return res;

}
void fibonacci()
{
int f0=0,f1=1,fn,c=1;
float n;

if (n == 0) printf("0");
if (n == 1) printf ("0 1");
else
if (n>= 2) {
printf("0 1");
while (c <= n) {
fn = f0+f1;
printf("%i",fn);
f0=f1;
f1=fn;
c++;
}
}

}
int main ()
{
int x, n, op;
long int N;
float res;
printf ("\n\t Funciones \t\n");
printf ("\n\t 1. Potencia \t\n");
printf ("\n\t 2. Evaluar sumatoria \t\n");
printf ("\n\t 3. Serie \t\n");
printf ("\n\t 4. Aproximacion de PI \t\n");
printf ("\n\t 5. Fibonacci \t\n");
printf ("\n\t 6. Salir \t\n");
printf ("\n\t Elegir una opcion \t\n");
scanf ("%i",&op);
switch (op)
{
case 1:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",&n);
printf ("\n\t Proporcionar el valor de x \t\n");
scanf ("%i",&x);
res= potencia (x,n);
printf ("\n\t La potencia es %f",res);
break;
case 2:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",&n);
res= sumatoria (n);
printf ("\n\t La sumatoria es %f \t\n",res);
break;
case 3:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",&n);
res= serie (n);
printf ("\n\t laserie de n es %f \t\n",res);
break;
case 4:
printf ("\n\t Proporcionar el valor de N \t\n");
scanf ("%i",&N);
res= aproximacion_pi (N);
printf ("\n\t La aproximacion de pi de N es %f \t\n",res);
break;
case 5:
printf ("\n\t Proporcionar el valor de n \t\n");
scanf ("%i",&n);
fibonacci ();
break;
case 6:
printf ("\n\n\t Salir \n\n\t");
break;
default:
printf ("\n\t Opcion no valida, ERROR\n\t");
break;
}
system("PAUSE");
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas