Problema com logica
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'
}Discussão (1)
Carregando comentários...