Hola
furcioritaLa 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.