#include <stdio.h>
#include <stdlib.h>
void readPolynom(int **p, int *n) {
printf("Give the degree of the polynom -> ");
// Allocate memory for coefficients (degree + 1 elements)
*p
= (int *)malloc((*n
+ 1) * sizeof(int)); if (*p == NULL) {
printf("Memory allocation failed!\n"); }
for(int i = 0; i <= *n; i++) {
}
}
void writePolynom(int *p, int *n) {
for(int i = 1; i <= *n; i++) {
}
}
float valuePolynom(int *p, int *n, float x) {
float value = p[0],
aux = 1;
for(int i = 1; i <= *n; ++i) {
aux = aux * x;
value += aux * p[i];
}
return value;
}
void derivatePolynom(int *p, int *n) {
for(int i = 0; i < *n; i++) {
p[i] = p[i + 1] * (i + 1);
}
(*n)--;
}
int main(int argc, char const *argv[]) {
int *coef = NULL; // Dynamic array for coefficients
int n; // Degree
readPolynom(&coef, &n);
writePolynom(coef, &n);
derivatePolynom(coef, &n);
writePolynom(coef, &n);
float x = 1.450;
float ans = valuePolynom(coef, &n, x);
printf("\np(%.3f) = %.3f\n", x
, ans
);
// Free allocated memory
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgcmVhZFBvbHlub20oaW50ICoqcCwgaW50ICpuKSB7CiAgICBwcmludGYoIkdpdmUgdGhlIGRlZ3JlZSBvZiB0aGUgcG9seW5vbSAtPiAiKTsKICAgIHNjYW5mKCIlZCIsIG4pOwogICAgCiAgICAvLyBBbGxvY2F0ZSBtZW1vcnkgZm9yIGNvZWZmaWNpZW50cyAoZGVncmVlICsgMSBlbGVtZW50cykKICAgICpwID0gKGludCAqKW1hbGxvYygoKm4gKyAxKSAqIHNpemVvZihpbnQpKTsKICAgIGlmICgqcCA9PSBOVUxMKSB7CiAgICAgICAgcHJpbnRmKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQhXG4iKTsKICAgICAgICBleGl0KDEpOwogICAgfQogICAgCiAgICBmb3IoaW50IGkgPSAwOyBpIDw9ICpuOyBpKyspIHsKICAgICAgICBwcmludGYoIlBbJWRdID0gIiwgaSk7CiAgICAgICAgc2NhbmYoIiVkIiwgKCpwICsgaSkpOwogICAgfQp9Cgp2b2lkIHdyaXRlUG9seW5vbShpbnQgKnAsIGludCAqbikgewogICAgcHJpbnRmKCJwKHgpID0gJWR4XjAiLCBwWzBdKTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gKm47IGkrKykgewogICAgICAgIHByaW50ZigiICsgJWR4XiVkIiwgcFtpXSwgaSk7CiAgICB9Cn0KCmZsb2F0IHZhbHVlUG9seW5vbShpbnQgKnAsIGludCAqbiwgZmxvYXQgeCkgewogICAgZmxvYXQgdmFsdWUgPSBwWzBdLAogICAgICAgICAgYXV4ID0gMTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9ICpuOyArK2kpIHsKICAgICAgICBhdXggPSBhdXggKiB4OwogICAgICAgIHZhbHVlICs9IGF1eCAqIHBbaV07CiAgICB9CgogICAgcmV0dXJuIHZhbHVlOwp9Cgp2b2lkIGRlcml2YXRlUG9seW5vbShpbnQgKnAsIGludCAqbikgewogICAgZm9yKGludCBpID0gMDsgaSA8ICpuOyBpKyspIHsKICAgICAgICBwW2ldID0gcFtpICsgMV0gKiAoaSArIDEpOwogICAgfQogICAgKCpuKS0tOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciBjb25zdCAqYXJndltdKSB7CiAgICBpbnQgKmNvZWYgPSBOVUxMOyAgLy8gRHluYW1pYyBhcnJheSBmb3IgY29lZmZpY2llbnRzCiAgICBpbnQgbjsgICAgICAgICAgICAgLy8gRGVncmVlCgogICAgcmVhZFBvbHlub20oJmNvZWYsICZuKTsKICAgIHdyaXRlUG9seW5vbShjb2VmLCAmbik7CiAgICBkZXJpdmF0ZVBvbHlub20oY29lZiwgJm4pOwogICAgcHJpbnRmKCJcblxuIik7CiAgICB3cml0ZVBvbHlub20oY29lZiwgJm4pOwogICAgCiAgICBmbG9hdCB4ID0gMS40NTA7CiAgICBmbG9hdCBhbnMgPSB2YWx1ZVBvbHlub20oY29lZiwgJm4sIHgpOwogICAgcHJpbnRmKCJcbnAoJS4zZikgPSAlLjNmXG4iLCB4LCBhbnMpOwoKICAgIC8vIEZyZWUgYWxsb2NhdGVkIG1lbW9yeQogICAgZnJlZShjb2VmKTsKICAgIHJldHVybiAwOwp9