Так что у меня проблема с моим кодом. Единственное, что осталось, это распечатка степени моих полиномов. Может ли кто-нибудь сказать мне, что мне следует изменить, чтобы исправить это? (Примечание * код должен использовать эти функции, и я не могу использовать указатели сделали это работать)Добавление и умножение двух многочленов в C
#include <stdio.h>
// Dva polinoma,sabrati,izmnoziti i ispisati
typedef struct polinom
{
int koef[100];
int n;
}POLINOM;
POLINOM citaj();
POLINOM saberi(POLINOM, POLINOM);
POLINOM pomnozi(POLINOM, POLINOM);
void ispisi(POLINOM);
int main()
{
POLINOM pol1, pol2, zbir, przvd;
printf("1. Polinom:\n");
pol1 = citaj();
printf("\n2. Polinom:\n");
pol2 = citaj();
zbir = saberi(pol1, pol2);
printf("\n Zbir:\n");
ispisi(zbir);
przvd = pomnozi(pol1, pol2);
printf("\n Proizvod:\n");
ispisi(przvd);
getch();
}
POLINOM citaj()
{
POLINOM pol;
int i;
do
{
printf("Najveci stepen polinoma: "), scanf("%d", &pol.n);
} while (pol.n < 1 || pol.n>100);
for (i = 0; i < 100; i++)
{
if (i <= pol.n)
{
printf("(X%d)=", i), scanf("%d", &pol.koef[i]);
}
else
pol.koef[i] = 0;
}
return pol;
}
POLINOM saberi(POLINOM pol1, POLINOM pol2)
{
POLINOM zbir;
int i;
if (pol1.n > pol2.n)
zbir.n = pol1.n;
else
zbir.n = pol2.n;
for (i = 0; i < 100; i++)
zbir.koef[i] = pol1.koef[i] + pol2.koef[i];
return zbir;
}
POLINOM pomnozi(POLINOM pol1, POLINOM pol2)
{
POLINOM przvd;
int i, j;
if (pol1.n > pol2.n)
{
przvd.n = pol1.n;
for (i = 0; i <= przvd.n; i++)
for (j = 0; j <= przvd.n; j++)
przvd.koef[i] = pol1.koef[i] * pol2.koef[j];
}
else
{
przvd.n = pol2.n;
for (i = 0; i <= przvd.n; i++)
for (j = 0; j <= przvd.n; j++)
przvd.koef[i + j] += pol1.koef[i] * pol2.koef[j];
}
return przvd;
}
void ispisi(POLINOM a)
{
int i;
for (i = 0; i <= a.n; i++)
printf("(X%d)= %d ", i, a.koef[i]);
}
Вот пример моего кода запущенный:
$ ./a.out
1. Polinom:
Najveci stepen polinoma: ^C
sundev19:/home/jgalloway12 $ ./a.out
1. Polinom:
Najveci stepen polinoma: 5
(X0)=4
(X1)=3
(X2)=2
(X3)=1
(X4)=5
(X5)=6
2. Polinom:
Najveci stepen polinoma: 5
(X0)=1
(X1)=2
(X2)=3
(X3)=4
(X4)=5
(X5)=6
Zbir:
(X0)= 5 (X1)= 5 (X2)= 5 (X3)= 5 (X4)= 10 (X5)= 12
Proizvod:
(X0)= -4199088 (X1)= 16 (X2)= 25 (X3)= 35 (X4)= 50 (X5)= 76 $
Fixed он это является рабочим кодом, если кому-либо это необходимо:
#include <stdio.h>
// Dva polinoma,sabrati,izmnoziti i ispisati
typedef struct polinom
{
int koef[100];
int n;
}POLINOM;
POLINOM citaj();
POLINOM saberi(POLINOM, POLINOM);
POLINOM pomnozi(POLINOM, POLINOM);
void ispisi(POLINOM);
int main()
{
POLINOM pol1, pol2, zbir, przvd;
printf("1. Polinom:\n");
pol1 = citaj();
printf("\n2. Polinom:\n");
pol2 = citaj();
zbir = saberi(pol1, pol2);
printf("\n Zbir:\n");
ispisi(zbir);
przvd = pomnozi(pol1, pol2);
printf("\n Proizvod:\n");
ispisi(przvd);
getch();
}
POLINOM citaj()
{
POLINOM pol;
int i;
do
{
printf("Najveci stepen polinoma: "), scanf("%d", &pol.n);
} while (pol.n < 1 || pol.n>100);
for (i = 0; i < 100; i++)
{
if (i <= pol.n)
{
printf("(X%d)=", i), scanf("%d", &pol.koef[i]);
}
else
pol.koef[i] = 0;
}
return pol;
}
POLINOM saberi(POLINOM pol1, POLINOM pol2)
{
POLINOM zbir;
int i;
if (pol1.n > pol2.n)
zbir.n = pol1.n;
else
zbir.n = pol2.n;
for (i = 0; i < 100; i++)
zbir.koef[i] = pol1.koef[i] + pol2.koef[i];
return zbir;
}
POLINOM pomnozi(POLINOM pol1, POLINOM pol2)
{
POLINOM przvd;
int i, j,k;
przvd.n = pol1.n + pol2.n ;
for (k = 0; k <= przvd.n; k++)
przvd.koef[k] = 0;
for (i = 0; i <= pol1.n; i++)
for (j = 0; j <= pol2.n; j++)
przvd.koef[i + j] += pol1.koef[i] * pol2.koef[j];
return przvd;
}
void ispisi(POLINOM a)
{
int i;
for (i = 0; i <= a.n; i++)
if(a.koef[i]!=0)
printf("(X%d)= %d ", i, a.koef[i]);
}
Предоставить журнал вашей программы. Не понятно, как это работает. – QuestionC
Выход программы, как это 1.Polynom Введите самый высокий показатель: 5 (например) х (0) = 5 // Х с 0 показатель х (1) = 4 х (2) = 3 х (3) = 2 х (4) = 1 х (5) = 1 Затем этот процесс повторяется для 2. полином После того, что он выводит добавление этих двух многочленов (с показателями), и после этого он должен отображать умножение этих полиномов, программа отображает правильные коэффициенты, но показатели не являются хорошими. –
Подозреваемый '*' запутан. Я ожидал бы что-то вроде 'przvd.n = pol1.n + pol2.n-1; (инициализировать przvd для всех 0.0) для (i = 0; i <= przvd.n; i ++) для (j = 0; j <= przvd.n; j ++) przvd.koef [i + j] + = pol1.koef [i] * pol2.koef [j]; ' – chux