プロが教えるわが家の防犯対策術!

C言語の問題で、多項式の次数nと係数a_i(i =0.1…n)を入力し、その多項式f(x)と微分方程式f’(x)を出力するプログラムについて教えてください!nはint型でn <100、a_iはdouble型の配列です。お願いします!

A 回答 (1件)

#include <stdio.h>


#include <stdlib.h>

int main(void) {
 int n, i;
 char s0[3], s1[16];
 double* a_i;

 scanf("%2s%*[^\n]%*c", s0);
 n = atoi(s0);
 a_i = malloc(sizeof(double) * n);

 for (i = 0; i < n; i++) {
  scanf("%15s%*[^\n]%*c", s1);
  a_i[i] = atof(s1);
 }

 printf("f(x) = ");
 for (i = 0; i < n; i++) {
  if (i == 0) {
   printf("%lf", a_i[i]);
  } else if (i == 1) {
   printf("%lf*x", a_i[i]);
  } else {
   printf("%lf*(x^%d)", a_i[i], i);
  }
  if (i != n - 1) {
   printf(" + ");
  } else {
   printf("\n");
  }
 }

 printf("f'(x) = ");
 if (n < 2) {
  printf("0\n");
 } else {
  for (i = 1; i < n; i++) {
   if (i == 1) {
    printf("%lf", a_i[i]);
   } else if (i == 2) {
    printf("%lf*x", i * a_i[i]);
   } else {
    printf("%lf*(x^%d)", i * a_i[i], i - 1);
   }
   if (i != n - 1) {
    printf(" + ");
   } else {
    printf("\n");
   }
  }
 }

 free(a_i);
 return 0;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!