0

基本的に私が尋ねようとしているのは、「ケース」を作成できるように配列を先読みする方法があるかということです。

例:配列には次のような整数のみがあります:0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 3

やりたいことは、次のゼロ以外の数までカウントダウンを作成することです。基本的にカウントダウンを表示します。これを行う方法はありますか?

4

1 に答える 1

1

このコード:

#include <stdio.h>

int main(void)
{
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };

    int a_size  = sizeof(array) / sizeof(array[0]);

    int i = 0;
    while (i < a_size)
    {
        if (array[i] == 0)
        {
            int j;
            for (j = i; j < a_size; j++)
                if (array[j] != 0)
                    break;
            printf("%d\n", j - i);
            i = j;
        }
        else
            i++;
    }
    return 0;
}

次の出力が生成されます。

4
1
12

それがあなたが望むものなら、それは大まかにあなたが必要とするものです. それがあなたの望むものではない場合、あなたが何を望んでいるのかをより明確に説明する必要があります。


改訂された期待される出力のための改訂されたコード:

#include <stdio.h>

int main(void)
{
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, };

    int a_size  = sizeof(array) / sizeof(array[0]);

    int i = 0;
    while (i < a_size)
    {
        if (array[i] == 0)
        {
            int j;
            for (j = i; j < a_size; j++)
                if (array[j] != 0)
                    break;
            int k = j - i;
            while (k > 0)
                printf(" %d", k--);
            i = j;
        }
        else
        {
            printf(" '");
            i++;
        }
    }
    putchar('\n');
    return 0;
}

改訂された出力:

 4 3 2 1 ' 1 ' 12 11 10 9 8 7 6 5 4 3 2 1 '
于 2013-11-23T21:52:48.853 に答える