fork(1) download
  1. /*
  2.   C/C++の宿題片付けます 161代目
  3.   http://t...content-available-to-author-only...h.net/test/read.cgi/tech/1354070278/
  4.   125 名前:デフォルトの名無しさん [sage]: 2012/12/06(木) 10:12:21.78
  5.   [1] 授業単元:c言語 関数&配列
  6.   [2] 問題文 関数配列の問題です。
  7.   http://www.dotup.org/uploda/www.dotup.org3703015.pdf
  8.   [3] 環境
  9.    [3.1] OS: Linux
  10.    [3.2] コンパイラ名とバージョン: gcc
  11.    [3.3] 言語: C
  12.   [4] 期限:12/11
  13.   ポインターは使わずによろしくお願いいたします
  14.   1. 与えられた数xの3乗根を返す関数cube_root(x)とこれを呼び出して1から10までの3乗根の値を表示する
  15.   プログラムを作成せよ。
  16. */
  17. #include<stdio.h>
  18.  
  19. double cube_root(double d)
  20. {
  21. double dmin = 1.0;
  22. double dmax = d;
  23. double tmp, sanjo;
  24.  
  25. while (1) {
  26. // 中間値
  27. tmp = (dmin + dmax) / 2.0;
  28. // tmp が dmax, dmin どちらかにくっついてしまったら、計算はここまで
  29. if (tmp == dmin || tmp == dmax) {
  30. break;
  31. }
  32. // 実際に3乗したのを判定して狭める
  33. sanjo = tmp * tmp * tmp;
  34. if (sanjo < d) {
  35. dmin = tmp;
  36. } else if (sanjo > d) {
  37. dmax = tmp;
  38. } else {
  39. break; // ジャスト
  40. }
  41. }
  42. return tmp;
  43. }
  44.  
  45. int main()
  46. {
  47. double a;
  48. for (a = 1.0; a <= 10.0; a += 1.0) {
  49. printf("%2.0fの3乗根 = %.10f\n", a, cube_root(a));
  50. }
  51. return 0;
  52. }
Success #stdin #stdout 0.01s 1676KB
stdin
Standard input is empty
stdout
 1の3乗根 = 1.0000000000
 2の3乗根 = 1.2599210499
 3の3乗根 = 1.4422495703
 4の3乗根 = 1.5874010520
 5の3乗根 = 1.7099759467
 6の3乗根 = 1.8171205928
 7の3乗根 = 1.9129311828
 8の3乗根 = 2.0000000000
 9の3乗根 = 2.0800838231
10の3乗根 = 2.1544346900