Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: asa5 en 29 Noviembre 2017, 01:07 am



Título: ¿Dónde está el error?
Publicado por: asa5 en 29 Noviembre 2017, 01:07 am
Hola, estoy tratando de hacer un programa que simule un polinomio, pero cuando introduzco los coeficientes siempre me arroja el resultado 0.
¿Podríais indicarme el error?

#include <iostream>
using namespace std;
float LeBucle(unsigned grado, unsigned i, float coeficientes, float x, float polinomio,float potencia)
{for (i=0; i<=grado; i++){
cin>>coeficientes;
polinomio=polinomio+coeficientes*potencia;
potencia=x*potencia;
}
return polinomio;}


int main(){
float coeficientes, x, polinomio=0, potencia=1;
unsigned grado, i;

 cout<<"Indica el grado del polinomio."<<endl;
    cin>>grado;

 cout<<"Introduce el punto x"<<endl;
    cin>>x;
    coeficientes=grado+1;

 cout<<"Introduce "<<coeficientes<<" coeficientes."<<endl;

    LeBucle(grado,i,coeficientes,x,polinomio,potencia);

 cout<<"P("<<x<<")="<<polinomio<<endl;
}



Título: Re: ¿Dónde está el error?
Publicado por: CalgaryCorpus en 29 Noviembre 2017, 03:12 am
En C existe el paso por valor solamente. En C++ existe el paso por referencia.
El resultado es 0 porque pasas el valor, se hace una copia se modifica la copia. EL original queda en su valor original, o sea 0. Compruebalo cambiando el valor inicial de la variable polinomio en tu main().

Solucion?

Asigna el valor de polinomio a lo que devuelva la funcion. i.e.

polinomio = LeBucle( ... los parametros que ya tienes ... )



Título: Re: ¿Dónde está el error?
Publicado por: asa5 en 29 Noviembre 2017, 12:03 pm
¡Muchas gracias! ¿Podrías explicar un poco mejor tu mensaje? el problema está resuelto pero llevo la sintaxis a nivel teórico un poco mal.