Ir ao conteúdo
  • Cadastre-se

Ajuda com problema sobre polinômios


Super Hooper

Posts recomendados

Oi pessoal, tudo bom?

 

Então, meu primeiro contato aqui com o fórum e gostaria que vocês pudessem me ajudar num probleminha aqui.

 

Pois bem, eu tenho um trabalho da faculdade pra entregar sobre uma biblioteca em C que calcula algumas operações sobre polinômios e descobri, depois que eu já tinha feito tudo, que eu não poderia usar arrays pra fazer o programa pois ainda não dei esse conteúdo.

 

Minha professora disse pra no lugar de arrays eu poderia usar uma struct. Mas eu não estou conseguindo pensar em um jeito de fazer essa modificação.

 

Será que alguém poderia me dar uma luz nesse problema?

 

Segue o código que eu fiz até agora pra calcular o valor de um ou mais polinômios dado um determinado valor de x.

#include <stdio.h>#define TAMVET 10 int somaPoli (){int i, n, j, k, z;float coef[TAMVET], x, p, termoX;      printf("Quantos polinomios você deseja calcular: ");      scanf("%d", &z);      while (z > 0) {          printf("Grau do polinomio: ");          scanf("%d", &n);          if (n < TAMVET) {              printf("Coeficientes do polinomio: ");              for (i = n; i >= 0; i = i - 1) scanf("%f", &coef[i]);              printf("Numero de calculos: ");              scanf("%d", &k);              for (j = 1; j <= k; j = j + 1) {                  printf("x: ");                  scanf("%f", &x);                  p = 0.0;                                        termoX = 1.0;                                   for (i = 0; i <= n; i = i + 1) {                                                   p = p + coef[i] * termoX;                       termoX = termoX * x;                        }                                               printf("p(%f)=%f\n", x, p);              }          }          else {              printf("Grau do polinomio muito elevado!");          }      z = z - 1;      }      return 0;} int main (void) {     int x;    printf("digite 1 para calcular um ou mais polinomios dado um determinado x\n");    scanf("%d", &x);    if (x == 1) {        somaPoli();    }    return 0;}
Link para o comentário
Compartilhar em outros sites

Cara eu não sei se o seu algoritmo funciona, mas trocar um array por uma struct é tenso, são coisas diferentes para situações diferentes.

 

Mas você pode criar uma struct com um número máximo de coeficientes, vai ficar uma porcaria na hora de usar no laço for.

 

Agora tem um truque matemático, se você imaginar que todo polinomio de grau 4 (exemplo) é 0x^5 + 4x^4 + ... você pode escrever uma solução genérica sem se preocupar se o coeficiente a está sendo usado para o 4º ou 2º, quer dizer você deixá-los fixos no algoritmo, pois o zero anula eles.

 

É claro que escrever uma algoritmo pra computador não é como o ser humano pensa, por isso existe cálculo numérico.

// Exemplo 4º grau + termo independente.struct Coeficientes{    float a;    float b;    float c;    float d;    float independente;}
Link para o comentário
Compartilhar em outros sites

 

Cara eu não sei se o seu algoritmo funciona, mas trocar um array por uma struct é tenso, são coisas diferentes para situações diferentes.

 

Mas você pode criar uma struct com um número máximo de coeficientes, vai ficar uma porcaria na hora de usar no laço for.

 

Agora tem um truque matemático, se você imaginar que todo polinomio de grau 4 (exemplo) é 0x^5 + 4x^4 + ... você pode escrever uma solução genérica sem se preocupar se o coeficiente a está sendo usado para o 4º ou 2º, quer dizer você deixá-los fixos no algoritmo, pois o zero anula eles.

 

É claro que escrever uma algoritmo pra computador não é como o ser humano pensa, por isso existe cálculo numérico.

// Exemplo 4º grau + termo independente.struct Coeficientes{    float a;    float b;    float c;    float d;    float independente;}

Cara, o código até funciona. O único problema mesmo são os arrays.

 

Você poderia me explicar um pouco mais sobre esse "truque" que você falou? E, se puder, criar um código pra exemplificar isso?

Link para o comentário
Compartilhar em outros sites

Cara, o código até funciona. O único problema mesmo são os arrays.

 

Você poderia me explicar um pouco mais sobre esse "truque" que você falou? E, se puder, criar um código pra exemplificar isso?

 

Cara o seu algoritmo não faz nenhum sentido, depois de informar os coeficientes você tem que fazer uma série de processos como Briot-Ruffini até reduzir ele a algo que pode ser resolvido por Bhaskara.

 

Não faço a mínima ideia do que seja "Numero de calculos", mas você não resolveu nada. Você tá pedindo ajuda do usuário pra resolver?

#include <stdio.h>struct Coeficientes{	// Grau 7	float a;	// Grau 6	float b;	// Grau 5	float c;	// Grau 4	float d;	// Grau 3	float e;	// Grau 2	float f;	// Grau 1	float g;	// Termo independente	float h;} coeficientes;void ler_polinomio(){	printf("Digite o coeficiente do termo de 7º (zero se não houver):");	scanf_s("%f", &coeficientes.a);	printf("Digite o coeficiente do termo de 6º (zero se não houver):");	scanf_s("%f", &coeficientes.;	printf("Digite o coeficiente do termo de 5º (zero se não houver):");	scanf_s("%f", &coeficientes.c);	printf("Digite o coeficiente do termo de 4º (zero se não houver):");	scanf_s("%f", &coeficientes.d);	printf("Digite o coeficiente do termo de 3º (zero se não houver):");	scanf_s("%f", &coeficientes.e);	printf("Digite o coeficiente do termo de 2º (zero se não houver):");	scanf_s("%f", &coeficientes.f);	printf("Digite o coeficiente do termo de 1º (zero se não houver):");	scanf_s("%f", &coeficientes.g);	printf("Digite o coeficiente do termo independente (zero se não houver):");	scanf_s("%f", &coeficientes.h);}

O como fazer com struct, o resto eu faço se eu tiver tempo, até me interessei pela ideia.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...