Ayuda: Programación con arreglos

Iniciado por furciorifa, 6 Enero 2015, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

furciorifa

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Í:


#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.

Yoel Alejandro

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:
Código (cpp) [Seleccionar]

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.
Saludos, Yoel.
P.D..-   Para mayores dudas, puedes enviarme un mensaje personal (M.P.)