2012年6月29日金曜日

抵抗器

抵抗器のカラーコードを入力して、値を表示するプログラムを作ってみた。
#include <stdio.h>
int toler(int n) {
    int t;
    switch(n) {
        case 1: t=1; break;
        case 2: t=2; break;
        case 10: t=5; break;
        case 11: t=10; break;
        case 12: t=20; break;
    }
    return t;
}

int main(void) {
    int n1, n2, n3, n4, value, tolerance;
    printf("0:黒、1:茶、2:赤、3:橙、4:黄、5:緑、6:青、7:紫、8:灰、9:白、10:金、11:銀、12:無\n");
    printf("スペースで区切って、数字を入力: ");
    scanf("%d %d %d %d", &n1, &n2, &n3, &n4);
    value = n1 * 10 + n2;
    switch(n3) {
        case 0: printf("%dΩ ", value); break;
        case 1: printf("%dΩ ", value*10); break;
        case 2: printf("%.1fkΩ ", (double)value/10); break;
        case 3: printf("%dkΩ ", value); break;
        case 4: printf("%dkΩ ", value*10); break;
        case 5: printf("%.1fMΩ ", (double)value/10); break;
        case 6: printf("%dMΩ ", value); break;
        case 7: printf("%dMΩ ", value*10); break;
        case 8: printf("%dMΩ ", value*100); break;
        case 9: printf("%dMΩ ", value*1000); break;
        case 10: printf("%.1fΩ ", (double)value/10); break;
        case 11: printf("%.2fΩ ", (double)value/100); break;
    }
    tolerance = toler(n4);
    printf("±%d%\n", tolerance);
    return 0;
}
もっと良い方法が知りたい…。

0 件のコメント: