/* * poli.c */ #include #include #include #include "poli.h" /* Cria um polinomio formado por um único termo de coeficiente coef e expoente expo. */ ap_poli cria_termo(float coef, int expo) { if (coef != 0) { ap_poli n = (ap_poli) malloc (sizeof (struct termo)); n->coef = coef; n->expo = expo; n->prox = NULL; return n; } else return NULL; } /* Soma os polinômios apontados por p e q, sem destruí-los e retorna o resultado. */ ap_poli soma(ap_poli p, ap_poli q) { return NULL; } /* Multiplica o polinômio p por um escalar, sem destruí-lo, e retorna o polinômio resultante. */ ap_poli mult_escalar(ap_poli p, float escalar) { return NULL; } /* Subtrai q de p e retorna o polinômio resultante. As funções multEscalar e soma podem ser utilizadas para fazer a subtração. */ ap_poli subtrai(ap_poli p, ap_poli q) { return NULL; } ap_poli mult_termo(ap_poli p, float coef, int expo) { return NULL; } /* Multiplica os polinômios apontados por p e q, sem destruí-los, e retorna o resultado. Os nós intermediários, criados durante o processo, devem ser destruídos. */ ap_poli multiplica(ap_poli p, ap_poli q) { return NULL; } /* Retorna uma cópia do polinômio p. A função multEscalar pode ser utilizada para fazer a cópia. */ ap_poli copia(ap_poli p) { return NULL; } /* Desaloca a memória correspondente ao polinômio p, que deve receber NULL ao final do processo. */ void libera(ap_poli* p) { } /* Escreve o polinômio apontado por p */ void escreve(ap_poli p) { if (p == NULL) printf("0"); else { /* Escreve o primeiro termo */ printf ("%.1f", p->coef); if (p->expo > 1) printf ("x^%d", p->expo); else if (p->expo == 1) printf ("x"); p = p->prox; /* Escreve os outros termos */ while (p != NULL) { if (p->coef >= 0) printf (" + %.1f", p->coef); else printf (" - %.1f", - p->coef); if (p->expo > 1) printf ("x^%d", p->expo); else if (p->expo == 1) printf ("x"); p = p->prox; } } printf ("\n"); } int main() { struct mallinfo info; int mall_minblks; /* Utiliza o sistema de memória dinâmica uma vez, alocando e desalocando um nó, e verifica o número mínimo de blocos na memória. */ ap_poli p = (ap_poli) malloc (sizeof (struct termo)); free(p); info = mallinfo(); mall_minblks = info.uordblks; /* Verifica a utilização de memória dinâmica */ { struct mallinfo info; info = mallinfo(); if (info.uordblks > mall_minblks) printf("Memória sobrando...\n"); } return 0; }