добавил красивую печать полиномов

master
serr 2025-05-12 20:56:26 +03:00
parent d09a25663a
commit fc2e46a654
2 changed files with 24 additions and 10 deletions

View File

@ -144,18 +144,32 @@ void free_polynomial(Polynomial *p) {
// Печать полинома // Печать полинома
void print_polynomial(Polynomial *p) { void print_polynomial(Polynomial *p) {
if (p->size == 0) { if (p->size == 0) {
printf("0\n"); return; printf("0\n");
return;
} }
for (int i = 0; i < p->size; i++) { for (int i = 0; i < p->size; i++) {
// Печать знака Term term = p->terms[i];
if (p->terms[i].coefficient > 0) { printf("+");
} else { printf("-"); } // Печать знака (не печатаем '+' перед первым слагаемым)
// Печать коэффициента if (i != 0 || term.coefficient < 0) {
printf("%d", abs(p->terms[i].coefficient)); printf("%c", term.coefficient > 0 ? '+' : '-');
// Печать переменной и степени }
if (p->terms[i].exponent > 0) {
printf("x^%d", p->terms[i].exponent); // Печать коэффициента (если не 1/-1 или если степень 0)
if (abs(term.coefficient) != 1 || term.exponent == 0) {
printf("%d", abs(term.coefficient));
} else if (term.coefficient == -1 && term.exponent != 0) {
printf("-"); // Специальный случай для -x^n
}
// Печать переменной
if (term.exponent > 0) {
printf("x");
// Печать степени только если она больше 1
if (term.exponent > 1) {
printf("^%d", term.exponent);
}
} }
} }
printf("\n"); printf("\n");

View File

@ -1 +1 @@
2+2*(10-3)*(x-8) ((3*x^2 - 2*x + 1) * (x^3 - 4*x) + (5*x^4 - x^2)^2) - (x + 1)^5