Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vidaloka860

Problema com logica

Recommended Posts

Tenho o seguinte codigo.

É didatico...

O professor passou a parte de soma e falou pra fazer a subtração...

Tentei mão naun sei como... alguem pode ajudar...

 

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

void soma_polinomios(int pa[], int pb[], int pc[]);
void subtrair_polinomios(int pa[], int pb[], int pc[]);

main()
{
  int a[100] = {2, -3, 3, 1, 2},       // -3 x3 + x2
      b[100] = {3, 2, 3, 2, 1, -4, 0}, // 2 x3 + 2x - 4
      c[100];

  soma_polinomios(a, b, c);
  subtrair_polinomios(a, b, c);

  printf("Soma = ");
  for (int i = 0; i <= c[0] * 2; i++)
    printf("%d ", c[i]);
    
    
    printf("\n\n");
      subtrair_polinomios(a, b, c);
        printf("Subt = ");
  for (int i = 0; i <= c[0] * 2; i++)
    printf("%d ", c[i]);
  getch();
}

void soma_polinomios(int pa[], int pb[], int pc[])
{
  int ia, ib, ic;

  ia = ib = ic = 1;
  while (ia < pa[0] * 2 && ib < pb[0] * 2)
  {
    if (pa[ia + 1] > pb[ib + 1])
    {
      pc[ic] = pa[ia];
      pc[ic + 1] = pa[ia + 1];
      ia += 2;
      ic += 2;
    }
    else
      if (pb[ib + 1] > pa[ia + 1])
      {
        pc[ic] = pb[ib];
        pc[ic + 1] = pb[ib + 1];
        ib += 2;
        ic += 2;
      }
      else
      {
        if (pa[ia] + pb[ib] != 0)
        {
          pc[ic] = pa[ia] + pb[ib];
          pc[ic + 1] = pa[ia + 1];
          ic += 2;
        }
        ia += 2;
        ib += 2;
      }
  }

  // Copia o restante de 'a' se ainda não terminou
  while (ia < pa[0] * 2)
  {
    pc[ic] = pa[ia];
    pc[ic + 1] = pa[ia + 1];
    ia += 2;
    ic += 2;
  }

  // Copia o restante de 'b' se ainda não terminou
  while (ib < pb[0] * 2)
  {
    pc[ic] = pb[ib];
    pc[ic + 1] = pb[ib + 1];
    ib += 2;
    ic += 2;
  }

  pc[0] = ic / 2;   // Insere a qtde de termos de 'c'
}



//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

void subtrair_polinomios(int pa[], int pb[], int pc[])
{
  int ia, ib, ic;

  ia = ib = ic = 1;
  while (ia < pa[0] * 2 && ib < pb[0] * 2)
  {
    if (pa[ia + 1] > pb[ib + 1])
    {
      pc[ic] = pa[ia];
      pc[ic + 1] = pa[ia + 1];
      ia += 2;
      ic += 2;
    }
    else
      if (pb[ib + 1] > pa[ia + 1])
      {
        pc[ic] = pb[ib];
        pc[ic + 1] = pb[ib + 1];
        ib += 2;
        ic += 2;
      }
      else
      {
        if (pa[ia] - pb[ib] != 0)
        {
          pc[ic] = pa[ia] - pb[ib];
          pc[ic + 1] = pa[ia + 1];
          ic += 2;
        }
        ia += 2;
        ib += 2;
      }
  }

  // Copia o restante de 'a' se ainda não terminou
  while (ia < pa[0] * 2)
  {
    pc[ic] = pa[ia];
    pc[ic + 1] = pa[ia + 1];
    ia += 2;
    ic += 2;
  }

  // Copia o restante de 'b' se ainda não terminou
  while (ib < pb[0] * 2)
  {
    pc[ic] = pb[ib];
    pc[ic + 1] = pb[ib + 1];
    ib += 2;
    ic += 2;
  }

  pc[0] = ic / 2;   // Insere a qtde de termos de 'c'
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

pc, ic e pa não são lá nomes considerados bons p/ variáveis...

 

{3, 2, 3, 2, 1, -4, 0}, // 2 x3 + 2x - 4

 

Favor deixar claro no código como vc está representando os polinômios. Não é todo mundo que vai parar p/ entender isso.

 

Existem algumas multiplicações "mágicas" acontecendo nos while. O que é isso?

 

Não é necessário reescrever toda a lógica existente na soma: multiplique os coeficientes por -1 e depois os soma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.