Hola! Antes qué nada ::) feliz año , nunca había publicado en este foro preguntado nada y quisiera saber qué me falta en mi código
EL ENUNCIADO DICE ASÍ:
(http://i2.minus.com/jUXFtfvzCyItB.png)
#include<stdio.h>
#include<math.h>
int main(){
int a[4],m,n,i;
printf("Introduzca el valor de m\n");
scanf("%d",&m);
printf("Introduzca el valor de n\n");
scanf("%d",&n);
for(i=4;i>=1;i--){
printf("Introduzca el valor de x^%d\n",i-1);
scanf("%d",&a[i]);
}
for(m;m<=n;m++)
eval(&a,m,n);
return 0;
}//fin de main
int eval(int a[],int m,int n){
int aux=0;
int i;
for(i=4;i>=1;i--){
aux=aux*m+a[i];
printf("El valor de la funcion cuando f(%d) es : %d\n",m,aux);
}
}//fin eval
Espero qué me puedan decir qué hacer en pocas palabras solamente me falta mandar todas las evaluaciones del polinomio a un arreglo qué compare el mayor y el menor y los regrese pero no sé cómo hacerlo.
Hola furciorita
La idea sería más o menos seguir los siguientes pasos
1.) Recibir a, b, c, d, m, n del teclado. ( Si m > n dar mensaje de error ).
2.) Inicializar r = m. Calcular f(m) e inicializar p = f(m).
3.) Inicializar s = m. Inicializar q = f(m) (ya calculado en el anterior)
4.) Luego en un ciclo, desde x = m + 1 hasta x = n:
4.1 Si f(x) > p, hacer p = f(x), y hacer también r = x
4.2 Si f(x) < q, hacer q = f(x), y hacer también s = x
La idea es que p conserve el valor máximo y q el mínimo de los valores evaluados. Si hallas un f(x) mayor que el valor actual de p, entonces p se actualiza a este nuevo valor máximo. Similar lógica respecto al mínimo q.
Luego de recorrer desde x = m + 1 hasta x = n, tendrás los valores p, q, r, s como se pide.
Ah, y recuerda que en C los arreglos comienzan con el índice 0, no el índice 1.
=================================================
Por cierto, la función eval() que defines pareciera querer implementar el llamado "método de Horner" para evaluación de polinomios. Supongo que a[0] representa el coeficiente de menor grado, mientras que a[3] es el de mayor. Pero creo que en este caso está mal implementado, debería ser como:
int eval( int a[], int x ) {
int aux = 1; /* no aux = 0 !!! */
int i;
for ( i = 3; i > 0; i-- )
aux = a[i] * aux + a[i-1];
return aux;
}
Recuerda que en C los arreglos comienzan con el índice 0, por lo tanto el recorrido del vector es desde i=0 hasta i=3, no desde i=1 hasta i=4.
Con todo esto creo que ya puedes terminar tu programa, o al menos encaminarte a ello.