ここから本文です

2つの抵抗値を読み込み、直列接続・並列接続したときの合成抵抗を求めるプログラム...

kei********さん

2019/6/1723:06:37

2つの抵抗値を読み込み、直列接続・並列接続したときの合成抵抗を求めるプログラムを作成してくれませんか?m(_ _)m
ただし、条件があって抵抗値は整数型で入力し、並列接続の答えは、実数型で

表示することです。
実行結果は、2回以上出力することです。

実行例
***合成抵抗を求める***
R1=? 20
R2=? 30

直列接続=50Ω 並列接続=12.0Ω


続けますか(y/n)?_

閲覧数:
44
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

2019/6/1817:43:51

作ってみました。
>実行結果は、2回以上出力することです。
意味不明です。

#include <stdio.h>
#include <stdlib.h>

// 続けるか聞く。N/n: 1を返す。Y/y: 0を返す
int q_no() {
    char buf[100];

    for (;;) {
        fprintf(stderr, "続けますか(y/n)? ");
        fgets(buf, sizeof buf, stdin);
        if (*buf == 'N' || *buf == 'n') return 1;
        if (*buf == 'Y' || *buf == 'y') return 0;
    }
}
int main (void) {
    char buf[100];
    int r1, r2;

    fprintf(stderr, "***合成抵抗を求める***\n");
    for (;;) {
        fprintf(stderr, "R1=? ");
        fgets(buf, sizeof buf, stdin);
        r1 = (int)strtol(buf, NULL, 10);

        fprintf(stderr, "R2=? ");
        fgets(buf, sizeof buf, stdin);
        r2 = (int)strtol(buf, NULL, 10);

        int series_R = r1 + r2;
        double parallel_R = (double)(r1 * r2) / (r1 + r2);

        fprintf(stderr, "直列接続=%dΩ ", series_R);
        fprintf(stderr, "並列接続=%.1fΩ\n", parallel_R);

        if (q_no()) break;
    }
}

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる