Ir para conteúdo
Fórum Script Brasil
  • 0

Achar grau de um polinômio qualquer


RS25

Pergunta

Estou precisando de ajuda nesta questão:

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.

Já fiz o seguinte código

#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;
int *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 é",poli);

free(poli);
getch();

}

Mas o mesmo esta com erro nesta linha: poli = (double*) malloc(x*sizeof(double));

Alguém poderia me ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Alterei o código

Mas agora esta dando erro na hora de ler o 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 é",poli);

free(poli);
getch();

}

Você declarou *poli como int e quer alocar um espaço de memória para o tipo double nele.

Link para o comentário
Compartilhar em outros sites

  • 0

Vamos por partes:

1° - Usa-se %lf para double no scanf. %f é para float.

2° - Antes de tentar colocar algum valor na sua variável *poli, você primeiro deve alocar espaço em memória para ela, coisa que você só faz após isso.

3° - Você precisa atribuir algum valor a sua variável grau antes de colocá-la como condição no for, pois caso contrário ela irá conter lixo de memória.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...