数列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: 数列

Re: 数列

#5

by box » 2年前

どのように計算すればいいのですか
その数列の一般項の分母にあたる
2i+1
を適切に計算するコードを追加する。

Re: 数列

#4

by box » 2年前

コード:

#include <stdio.h>

int getIteration(void)
{
    int n;

    do {
        printf("0以上の整数を入力> ");
        scanf("%d", &n);
        if (n >= 0) break;
        printf("入力エラー\n");
    } while (n < 0);
    return n;
}

double calcPI_4(int n)
{
    double sum, x;
    int i;

    for (sum = i = 0; i <= n; i++) {
        x = 2 * i + 1;
        if (i % 2 != 0) x = -x;
        sum += 1 / x;
    }
    return sum;
}

void printAnswer(double s)
{
    printf("%f\n", s);
}

int main(void)
{
    printAnswer(calcPI_4(getIteration()));
    return 0;
}

Re: 数列

#3

by 大熊 » 2年前

みけCAT さんが書きました:
2年前
提示されたコードは } が足りないため、そもそもコンパイルエラーになって値の入力すらできないはずです。
また、もし実行できたとしても、

コード:

sum += (1/sign);
は整数のゼロ除算なので強制終了の原因になりますね。
どのように計算すればいいのですか

Re: 数列

#2

by みけCAT » 2年前

提示されたコードは } が足りないため、そもそもコンパイルエラーになって値の入力すらできないはずです。
また、もし実行できたとしても、

コード:

sum += (1/sign);
は整数のゼロ除算なので強制終了の原因になりますね。

数列

#1

by 大熊 » 2年前

添付写真の計算をして表示するプログラムを完成させ、0未満の数を入力したとき, 「入力エラー」と表示し再度入力を促すようにしたいです。かいたコードはうまくいきません。値を入力して終わってしまいます

コード:

#include <stdio.h>

int main(void)
{
    int i, n, sign;
    double sum;
    n = 0;
    while (1) {
        printf("0以上の整数を入力> ");
        scanf("%d", &n);
        if (n>0) {
            break;
        } else {
            printf("入力エラー\n");
    
    }    
    sign = 1;
    sum = 0;
    for (sign=0; sign<=n ; sign++) {
        sum += (1/sign);
        sign *= -1;
    }
    printf("%f\n", sum);
    return 0;
}
添付ファイル
スクリーンショット (2440).png
スクリーンショット (2440).png (10.65 KiB) 閲覧数: 5417 回

ページトップ