Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Marendo05 en 17 Septiembre 2017, 20:25 pm



Título: Porque me sale error de "Function/definition is not allowed"
Publicado por: Marendo05 en 17 Septiembre 2017, 20:25 pm
#include<stdio.h>
#include<math.h>
#include <conio.h>
#include <stdlib.h>
float ntermino(float dv, float h);
int main()
{
   char r, f;
   float a,b,c;
   double x1=0, x2=0;
   int x=0;
   int p=0;
   int n2=0;
   int n3=0;
   int n=0;
   int i, fact=1;
   float resultado;
   float xc;
   float xv1=-0.001, xv2=-3000;
   float Fx;
   float Fxr;
   float Errorx1, Errorx2;
   int q, t, w, k;
    float an[q], bn[q-1], cn[q-2], dn[q-3], av, bv, cv, dv, v, h, j, ve, ea, er;
   double taylor;
   for(f='R'; f=='R';)
   {
      system("cls");
   printf("Menu 1\n");
   printf("Presione 1 para Hoja de presentacion\n");
   printf("Presione 2 para Error de Redondeo\n");
   printf("Presione 3 para Calculo de error por Truncamiento(Serie de Taylor)\n");
  scanf("%d",&p);
    switch(p)
{
case 1:
   system("cls");
   printf("Universidad Tecnologica de Panama\n");
   printf("Facultad de Electrica\n");
   printf("Lic. en Ingenieria Electromecanica\n");
   printf("Metodos numericos para Ingenieros\n");
   printf("Proyecto\n");
   printf("Facilitadora: Ing. Jacqueline S. De Ching\n");
   printf("Integrantes:\n");
   printf("Tommy Feng 3-742-2490\n");
   printf("Mario Him 8-922-621\n");
   printf("Grupo: 1IE-123\n");
   break;
   case 2:
      system("cls");
printf("Menu 2 Error de Redondeo\n");
      printf("Ingrese los valores para: a, b y c:\n\n");
      scanf("%f%f%f",&a,&b,&c);
                   x1=(-b+sqrt(b*b-4*a*c))/(2*a);
             x2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf("Presione 1 para el resultado de simple precision\n");
printf("Presione 2 para el resultado de doble precision\n");
printf("Presione 3 para el analisis de los resultados calculado contra las raices verdaderas\n");
             scanf("%d",&n2);
      switch(n2)
  {
     case 1:
        printf("El Resultado en simple precision es: %f\n",x1);
        printf("El Reusltado en simple precision es: %f\n",x2);
        break;
     case 2:
        printf("El Resultado en doble precision es: %lf\n",x1);
        printf("El Resultado en doble precision es: %lf\n",x2);
        break;
     case 3:
        printf("Analisis de los resultados valor calculado contra las raices verdaderas\n");
        Errorx1=x1-xv1;
        Errorx2=x2-xv2;
        Fx=(pow(a*x1,2))+b*x1+c;
        printf("Fx: %.3f\n",Fx);
        Fxr=(pow(a*xv1,2))+b*xv1+c;
        printf("Fxr: %.3f\n",Fxr);
        printf("El Error en el x1: %.f\n",fabs(Errorx1));
        printf("El Error en el x2: %.f\n",fabs(Errorx2));
  }
   break;
   case 3:
      {
      
   int q, t, w, k;
    float an[q], bn[q-1], cn[q-2], dn[q-3], av, bv, cv, dv, v, h, j, ve, ea, er;
   double taylor;
   
   
   do{
   system("cls");
   printf("Menu#4\nError por truncamiento\n");
   printf("1. Error cometido en el n-esimo termino.\n2. Valor aproximado de la función.\n3. Valor exacto de la función.\n4. Error Absoluto.\n5. Error Relativo Porcentual.\n6. Regresar al Menú #1\n");
   scanf("%d", &k);
   
   switch(k){

   case 1:
   system("cls");   
   printf("Ingrese los coeficientes para una funcion tipo f(x)=d+cx+bx^2+ax^3\n");
   getch();
   system("cls");
   q=4;

   for(t=0; t<q; t++)
   {
      w=t+1;
       printf("ingrese coeficientes #%d ", w);
       scanf ("%f", &an[t]);
       system("cls");
    }
   
    //primera derivada
    for(t=1; t<q; t++)
   {
      bn[t-1]=an[t]*t ;
      
   }
   
   //segunda derivada
   
   for(t=1; t<q-1; t++)
      {
      cn[t-1]=bn[t]*t;
      
      }
   
    //tercera derivada
      
      for(t=1; t<q-2; t++)
      {
         dn[t-1]=cn[t]*t;
         
      }
      
      
      
      av=(an[0])+(v*an[1])+(pow(v,2)*an[2])+(pow(v,3)*an[3]);
      
      bv=(bn[0])+(v*bn[1])+(pow(v,2)*bn[2]) ;
   
      cv=(cn[0])+(cn[1]*v);
      
      dv=dn[0];
      
       
      
      printf("Ingrese el valor de x inicial");
       scanf("%f", &v);
   
      printf("ingrese el valor de la x final");
       scanf("%f", &j);
      
       h=j-v;
       system("cls");
   
      
      
      
      taylor=(av)+(bv*h)+ (pow(h, 2)*cv*0.5)+((pow(h, 3)*dv)/6);
      
      ve=(an[0])+(j*an[1])+(pow(j,2)*an[2])+(pow(j,3)*an[3]);
      
      ea=ve-taylor;
      
      er=(ea/ve)*100;
      
      
      
      printf("\n\n\tEl error en el n-ésimo termino es %f", ntermino(dv, h));
      printf("\n\n\tPulse cualquier tecla para regresar al menú anterior");
      getch();
      
      break;
      
      case 2:
      system("cls");   
      printf("\n\n\tEl valor aproximado es  %f", taylor);
      printf("\n\n\tPulse cualquier tecla para regresar al menú anterior");
      getch();
      break;
      
      case 3:
      system("cls");   
      printf("\n\n\tEl valor exacto de la funcion es  %f",ve );
      printf("\n\n\tPulse cualquier tecla para regresar al menú anterior");
      getch();
      break;
      
      case 4:
      system("cls");   
      printf("\n\n\tEl error absluto de la funcion es  %f",ea );
      printf("\n\n\tPulse cualquier tecla para regresar al menú anterior");
      getch();
      break;
      
      case 5:
      system("cls");   
      printf("\n\n\tEl error relativo de la funcion es  %f",er );
      printf("\n\n\tPulse cualquier tecla para regresar al menú anterior");
      getch();
      break;
      
      case 0:
      system("cls");
      printf("Presione Enter para volver al MENU #1");
      break;
   
      default:
       system("cls");
      printf("La opcion que ingreso en incorrecta.\n\nPresione Enter para intentarlo de nuevo");
      getch();
      break;
         
}
}while(k);
}
   
   float ntermino(float dv, float h)
   {
      float enesimo;
      
      enesimo=((pow(h, 3)*dv)/6);
      
      return enesimo;
   }

   break;
}
printf("Presione R para regresar al Menu 1\n");
printf("Sino presione cualquier boton y presione Enter para salir del programa\n");
fflush(stdin);
scanf("%c", &f);
}
printf("Se acabo el programa presione Enter para salir\n");
}


Título: Re: Porque me sale error de "Function/definition is not allowed"
Publicado por: ivancea96 en 17 Septiembre 2017, 20:31 pm
Código
  1.   float ntermino(float dv, float h)
  2.   {
  3.      float enesimo;
  4.  
  5.      enesimo=((pow(h, 3)*dv)/6);
  6.  
  7.      return enesimo;
  8.   }
Las funciones no pueden estar dentro de otra función.