2

したがって、これは本当に基本的なものであるはずであり、より複雑なコードを書くことができたので、何かが欠けていると確信しています...

コードは正の整数を取り、各数値の平均値をその隣の数値と一緒に書き込むことになっています。ユーザーが指定する整数は少なくとも 2 つの整数になります。

したがって、ユーザーが a1 a2 a3 a4 を指定した場合、出力は "(a1+a2)/2, (a1+a2+a3)/3,(a2+a3+a4)/3,(a3+a4)/2" になります。ただし、4 つの数字に限定されるわけではなく、それより少なくても多くてもかまいません。

問題は、a1 a2 しかない場合、出力は (a1 + a2)/2、(a1 + a2)/2 になるということです? ここに何かが欠けていると確信しており、手がかりがありません...基本的なもの以外を使用することは想定されていません。入力(a1、a2 )しかし、コードはa1、a2、a3などでは機能しないため、明らかに間違っています...

私はコードを入れていますが、それは解決策に近くなく、それが何をするのかさえ洗練されていません:

 #include <stdio.h>
int main()
{
    float num=0.0,num2=-1, nextnum=-1,nextnext=-1, after=0.0,after2=0.0;
    do {
        scanf("%f", &num);
        if (num2==-1)
        {
            scanf("%f", &num2);

        after=num+num2  ;   

        nextnum=num2;
        printf("%4g" , (after/2) );
        }


        after=num+nextnum   ;   


        nextnum=num;


    printf("%4g" , (after/2));

    }           
    while (num>0);
    return 0;

}

どんな種類のヘルプ/提案/ガイダンスも喜んで受け入れられます..

4

1 に答える 1

0

まず、反復ごとに変数とその値の表を作成することをお勧めします。私はそれを3回繰り返しましたが、各2つの数値の平均しか計算しませんでした。変数nextnextも使用していないため、これが元のコードなのか、その一部なのかわかりません。after2ただし、元の問題を解決するには、 のelseブロックをif追加し、必要な命令を if 部分に追加する必要があります。考えられる解決策は次のとおりです。

do {
    scanf("%f", &num);
    if (num2==-1)
    {
        scanf("%f", &num2);

    after=num+num2  ;   

    nextnum=num;
    nextnext = num2;
    printf("%4g" , (after/2) );
    }
    else {

    after=num+nextnum+nextnext   ;   

    nextnext=nextnum;
    nextnum=num;


    printf("%4g" , (after/2));
    }

}           
while (num>0);

これにより、最後の 3 つの数字の平均が得られます。cicle の後に最後の 2 つの数字の部分を追加できます。これには、cicle の後に入力された最後の 2 つの数字が含まれている必要がありますwhilenextnumnextnext

于 2012-11-18T17:16:46.200 に答える