0

私はCプログラミングが初めてで、入力をサイクルでスキャンし、スキャンしながら検証する必要があります。私はこのようなことを達成しようとしています:

0 から n までのサイクルで、n ごとに 4 つの入力を入力し、Enter キーを押してそれらを検証し (間違っている場合はプログラムを終了します)、さらに 4 つの入力を入力し続けます (新しい行)...

基本的に入力はこれです:

1 2 3 4 (入力)(OK の場合 -> 次の行にカーソル)

7 5 6 8 (入力) ....

n まで何度も。

int i=0;
while (i <= n){
     if(scanf("%d %d %d %d",&array[i],&array[i+1],&array[i+2],&array[i+4])!=4) return 0; 
    i+=5;
}

このプログラムは、Enter キーを押すと終了します。

助けてくれてありがとう。

4

1 に答える 1

0

i配列のインデックス用であるため、ループに別のカウンターを使用する必要があります。

が 4 つの入力を作成する回数である場合n、それに応じて (5 の倍数で) 配列を割り当てる必要があります。また<、カウンターが で始まる場合は、n 未満ではなく、n 未満を使用する必要があります0

ここで、変数cは while 条件に使用されます。

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

int main(int argc, char** argv)  
{ 
    int n = 5;
    int array[n*5]; // mult 5 because of i+=5 / 4 inputs at onece + 1 rserved
    int i=0;
    int r = 0, c = 0;
    while (c < n){
        printf("type four ints: ");
        r = scanf("%d %d %d %d",&array[i],&array[i+1],&array[i+2],&array[i+4]);
        if(4 != r) {
            printf("bad input, program will exit: %d\n", r);
            return EXIT_FAILURE; 
        }
        i+=5;
        c++;
    }
    return EXIT_SUCCESS;  
} 
于 2013-11-09T18:53:07.493 に答える