Foros del Web » Programación para mayores de 30 ;) » C/C++ »

pequeña duda

Estas en el tema de pequeña duda en el foro de C/C++ en Foros del Web. cual es la forma correcta de poner esto en c fun=e*pow(xi,0.5); error: expected primary-expression before ')' token se supone que no puedo poner nada antes ...
  #1 (permalink)  
Antiguo 05/02/2013, 20:22
Avatar de Tyreal  
Fecha de Ingreso: noviembre-2011
Ubicación: ke-li
Mensajes: 39
Antigüedad: 12 años, 5 meses
Puntos: 0
pequeña duda

cual es la forma correcta de poner esto en c

fun=e*pow(xi,0.5);
error:
expected primary-expression before ')' token

se supone que no puedo poner nada antes del pow.

entonces esa linea de código. como se declaria correctamente si quiero poner algo como esto:
f(x)=e^(-0.5x).
aprovechando como arian esto con el método de newthon raphon
si la derivada -5e^(-0.5)

yo tengo esto,

Código C++:
Ver original
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<math.h>
  5.  
  6. float iteracion(float n1, float n);
  7. int main()
  8. {
  9.     int c;
  10.     float x1;
  11.     float Er=0.001;
  12.    
  13.           printf("Newthon Rapshon\n");
  14.           printf("La ecuacion es e^5x\n");
  15.           printf("\nEl Error relativo es de 0.001%");
  16.           printf("\nTomando en cuanta que e=2.7182");
  17.           printf("\n Escriva el valor de x para la funcion e^.5x\n");
  18.              scanf("%f",&x1);
  19.              iteracion(x1,Er);
  20. system("pause");
  21.  
  22. return(0);
  23. }
  24.           float iteracion(float n1, float n)
  25.           {
  26.                 float xi;
  27.                 float fxi;
  28.                 float ai;
  29.                 float fai;
  30.                 float deriv;
  31.                 float fun;
  32.                 float i=1;
  33.                 float e1;
  34.                 float e=2.7182;
  35.                 xi=n1;
  36.                 fxi=e*pow(xi,0.5,);
  37.                    
  38.                     while(i>=Er)
  39.                     {
  40.                    
  41.                          deriv=(0.5*e)*pow(x1,0.5);
  42.                          fun=e*pow(xi,0.5);
  43.                          ai=xi-(fun/deriv);
  44.                          fai=e*pow(ai,0.5);
  45.                          i=fabs(((e1-ai)/e1)*100);
  46.                          printf("\nXi=%2.8f f(Xi)=%2.8f \nXi+1=%2.8f f(Xi+1)=%2.8f\n",xi,fxi,ai,fai);
  47.                          printf("\n el porcentaje de error es: %0.001f\n",i);
  48.                          xi=ai;
  49.                          fxi=fai;
  50.                          e1=fabs(ai);
  51.                          ai=0;
  52.                          fai=0;
  53.                     }    
  54.           return ai;
  55.           }

obviamente tengo un error de sintaxis, pero de lógica no estoy seguro. ustedes diganme como voy o como puedo mejorar este código u otro método para hacer esto
  #2 (permalink)  
Antiguo 06/02/2013, 00:20
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: pequeña duda

en la línea 36 por ejemplo tienes una coma tras el segundo argumento.

Er se convierte en la función iteracion en n pero la referencias como Er , inexistente, en la línea 38.

En la línea 41 usas la variable x1 sin declarar un valor.

[...]

Y me pregunto yo por qué no usas tú el cerebro para entender los errores que reporta cuando lo único que hace falta es dedicarle 10 ó 15 segundos ya que describe cuál es el error.

Antes de que se inventasen los compiladores ultramodernos que te indican el error y la línea donde se produce (a veces con colorcitos e incluso con efectos animados y mientras escribes), o los foros como forosdelweb me pregunto qué haría gente como tú. Estaríais perdidos en un mar de confusión solo por no dedicarle un ratito a revisar la sintaxis y las variables.

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 06/02/2013 a las 00:28
  #3 (permalink)  
Antiguo 06/02/2013, 12:12
 
Fecha de Ingreso: septiembre-2012
Ubicación: Lima
Mensajes: 46
Antigüedad: 11 años, 7 meses
Puntos: 4
Respuesta: pequeña duda

Intente arreglar tu programa masomenos queda asi:

Código:
#include<stdio.h>
#include<math.h>
#include<iostream>
 
float iteracion(float n1, float n);
int main()
{
    int c;
    float x1; 
    float Er=0.001;
    
          printf("Newthon Rapshon\n");
          printf("La ecuacion es e^5x\n");
          printf("\nEl Error relativo es de 0.001%");
          printf("\nTomando en cuanta que e=2.7182");
          printf("\n Escriva el valor de x para la funcion e^.5x\n");
          scanf("%f",&x1);
          iteracion(x1,Er);
std::cin.get();
 
return 0;
}
          float iteracion(float n1, float n)
          {
                float xi; 
                float fxi; 
                float ai; 
                float fai; 
                float deriv; 
                float fun; 
                float i=1; 
                float e1;
                float e=2.7182;
                xi=n1;
                fxi=e*pow(xi,0.5);
                    
                    while(i>=0.0001)
                    {
                    
                         deriv=(0.5*e)*pow(xi,0.5);
                         fun=e*pow(xi,0.5);
                         ai=xi-(fun/deriv);
                         fai=e*pow(ai,0.5);
                         i=fabs(((e1-ai)/e1)*100);
                         printf("\nXi=%2.8f f(Xi)=%2.8f \nXi+1=%2.8f f(Xi+1)=%2.8f\n",xi,fxi,ai,fai);
                         printf("\n el porcentaje de error es: %0.001f\n",i);
                         xi=ai;
                         fxi=fai;
                         e1=fabs(ai);
                         ai=0;
                         fai=0;
                    }    
          return ai;
          }
aunque no le veo mucho sentido a tu programa da flojera tener que revisar todo eso de metodos numericos

Etiquetas: funcion, int, pequeña
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:55.