目次

C言語

使えるかもしれない使えないプログラム。

FizzBuzz

#include <stdio.h>
 
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 <stdio.h>
#include <math.h>
#include <stdbool.h>
 
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));
}