質問: ``` #include #define NUMBER 100 void errorcheck(int *t, int n); int main(void) { int num; int person[NUMBER]; printf("人数: "); scanf("%d", &num); printf("点数を入力してください\n"); for (int i=0; i #define NUMBER 100 void errorcheck(int *t, int n); int main(void) { int num; int person[NUMBER]; printf("人数: "); scanf("%d", &num); printf("点数を入力してください\n"); for (int i=0; i #define NUMBER 100 void errorcheck(int *t, int n); int main(void) { int num; int person[NUMBER]; printf("人数: "); scanf("%d", &num); printf("点数を入力してください\n"); for (int i=0; i=1&&t[i]<=50){ printf("%d番: %d\n",i + 1,t[i]); }else{ printf("%d番入力エラー\n",i+1); } } } ```
回答: 課題でシグネチャが指定されているのですね。 > > > ``` > void errorcheck(int *t, int n) > ``` > > 質問者さんは人数を第一引数に、データを第二引数にしていますが、**逆です**。 第一引数として配列の先頭アドレスを、第二引数として人数を渡すようにすると良いでしょう。 追記 > > 私の現状のコードですと最初の要素数だけで判定しまいその結果がその後の判定に繋がってしまう > > > 上手くいかない理由は、常に`*t`**しか**参照していないからです。 これでは先頭要素からポインタが移動しません。 次のどちらかの方法で、参照先を変更してください。 ・ ループ毎にポインタ変数tをインクリメントする ・ `*(t+i)`あるいは`t[i]`を参照する 個人的には後者の方が好みです。