====== C言語 ====== 使えるかもしれない使えないプログラム。 ===== FizzBuzz ===== #include int main(void) { int i; for(i=1; i<=100; i++) { if(i%15 == 0) { printf("FizzBuzz"); } else if(i%3 == 0) { printf("Fizz"); } else if(i%5 == 0) { printf("Buzz"); } else { printf("%d", i); } printf("\n"); } return 0; } ===== 3本の線分の長さから、成立する三角形の面積と内接円/外接円の半径を出力 ===== 3本の線分の長さを入力させ、その3本の線分から三角形を作れる場合に、その三角形の面積、内接円の半径、外接円の半径を求める。 三角形が成立しない場合には、エラーを表示する。 #include #include #include bool isValidTriangle(float a, float b, float c); float getHalfCircumference(float a, float b, float c); float getTriangleArea(float a, float b, float c); float getIncircleRadius(float a, float b, float c); float getCircumcircleRadius(float a, float b, float c); int main(void) { float a, b, c; printf("線分の長さを入力(入力例:3 4 5):"); scanf("%f %f %f", &a, &b, &c); printf("%f %f %f\n", a, b, c); if(!isValidTriangle(a, b, c)) { return 0; } printf("面積: %f\n内接円の半径: %f\n外接円の半径: %f\n", getTriangleArea(a, b, c), getCircumcircleRadius(a, b, c), getCircumcircleRadius(a, b, c)); return 0; } bool isValidTriangle(float a, float b, float c) { if(a <= 0 || b <= 0 || c <= 0) { printf("ERROR: 値が不正です。\n"); return false; } else if(fabsf(a-b) >= c || c >= a+b) { printf("ERROR: 三角形が成立しません。\n"); return false; } else { return true; } } float getHalfCircumference(float a, float b, float c) { return (a+b+c) / (float)2; } float getTriangleArea(float a, float b, float c) { float s = getHalfCircumference(a, b, c); return sqrt(s * (s-a) * (s-b) * (s-c)); } float getIncircleRadius(float a, float b, float c) { return (float)2 * getTriangleArea(a, b, c) / (a+b+c); } float getCircumcircleRadius(float a, float b, float c) { return (a*b*c) / ((float)4 * getIncircleRadius(a, b, c) * getHalfCircumference(a, b, c)); } ==== 三辺の長さから三角形が成立するかを返す関数 ==== bool isValidTriangle(float a, float b, float c) { if(a <= 0 || b <= 0 || c <= 0) { printf("ERROR: 値が不正です。\n"); return false; } else if(fabsf(a-b) >= c || c >= a+b) { printf("ERROR: 三角形が成立しません。\n"); return false; } else { return true; } } ==== 三辺の長さから半周長を求める関数 ==== float getHalfCircumference(float a, float b, float c) { return (a+b+c) / (float)2; } ==== 三辺の長さから三角形の面積を求める関数 ==== float getTriangleArea(float a, float b, float c) { float s = getHalfCircumference(a, b, c); return sqrt(s * (s-a) * (s-b) * (s-c)); } ==== 三辺の長さから内接円の半径を求める関数 ==== float getIncircleRadius(float a, float b, float c) { return (float)2 * getTriangleArea(a, b, c) / (a+b+c); } ==== 三辺の長さから外接円の半径を求める関数 ==== float getCircumcircleRadius(float a, float b, float c) { return (a*b*c) / ((float)4 * getIncircleRadius(a, b, c) * getHalfCircumference(a, b, c)); }