Grau do polinômio com função

1. Grau do polinômio com função

Gustavo
rs23

(usa Ubuntu)

Enviado em 06/11/2010 - 01:04h

Tentei fazer este programa

Implementar uma função que permita a avaliação de polinômios. Cada polinômio e definido por um vetor que contém seus coeficientes. Por exemplo, o polinômio de grau 3, 4x³+3x²+x+12, terá um vetor de coeficientes igual a v[12,1,3,4]. A função deve obedecer ao protótipo:

double avalia (double* poli, int grau, double x);

Onde o parâmetro poli e o vetor com os coeficientes do polinômio, grau é o grau do polinômio, e x é o valor para o qual o polinômio deve ser avaliado.

Fiz o seguinte programa que esta gerando erro:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

double avalia (double* poli, int grau, double x) {

double acc = 0.0;
double valor_x = 1.0;

int i;
for (i = 0; i < grau; i++) {
acc += poli[i] * valor_x;
valor_x *= x;
}

return acc;
}

main()
{

int x,i,res;
int *poli;

printf(" entre com os valores do vetor: ",i+1);
scanf ("%f",&poli[i]);

poli = (double*) malloc(x*sizeof(double));

printf("O grau do polinomio eh",poli);

free(poli);
getch();

}

O erro esta na linha:

poli = (double*) malloc(x*sizeof(double));

Alguém poderia me ajudar a terminar este programa?


  


2. Re: Grau do polinômio com função

Anderson de Oliveira Madeira
enki

(usa Zenwalk)

Enviado em 06/11/2010 - 21:02h

A linha que você mostrou podeira estar dando erro se você não tivesse incluido a stdlib.h, talvez o compilador que você esteja usando esteja dando warning na linha por perda de precisão, poruqe você tá convertendo um double* pra int*. Uma coisa que eu vi foi que o ponteiro poli é do tipo int* e era pra ser do tipo double* não seria isso? Porque se fosse do jeito que você colocou só estaria perdendo precisão. E as linhas:

printf(" entre com os valores do vetor: ",i+1);
scanf ("%f",&poli[i]);

estão sem sentido, elas não eram pra estar num laço for?

for(i = 0; i < grau; i++) {
printf("Entre com o %do. coeficiente: ", i+1);
scanf ("%e",&poli[i]);
}

Considerando que o inteiro grau foi lido.

Seu código está um pouco confuso, o que você realmente quer fazer com o polinômio? Multiplicar os coeficientes? Se for isso, então o laço da função avalia() não era pra estar assim?

double acc = 1;

for (i = 0; i < grau; i++) {
acc *= poli[i];
}

Espero que tenha ajudado, não sei bem o que você queria fazer com o polinômio, mas qualquer coisa posta a dúvida aí que a gente tenta te ajudar.


3. Re: Grau do polinômio com função

Gustavo
rs23

(usa Ubuntu)

Enviado em 08/11/2010 - 15:33h

enki

Eu modifiquei o código mas esta com erro na leitura do vetor

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

double avalia (double* poli, int grau, double x) {

double acc = 0.0;
double valor_x = 1.0;

int i;
for (i = 0; i < grau; i++) {
acc += poli[i] * valor_x;
valor_x *= x;
}

return acc;
}

int main(void)
{

int x,i,res,grau;
double *poli;

for(i = 0; i < grau; i++) {
printf("Entre com o %do. coeficiente: ", i+1);
scanf ("%f",&poli[i]);
}

poli = (double*) malloc(x*sizeof(double));

printf("O grau do polinomio eh",poli);

free(poli);
getch();

}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts