2016-12-26 16 views
-2

私はstructsの配列を持ち、いくつかの値が設定されています。ユーザーに値を入力するよう促しています。次に、ユーザーが入力した値が配列に含まれているかどうかを確認するために配列をチェックする必要があります。
見つかった場合、プログラムは実行を継続します。
見つからない場合、プログラムはユーザーに別の値を入力するよう求めます。whileループの条件で複数の値と比較するにはどうすればいいですか

以下は既に書いたコードです。 do-whileループ条件の一部として配列をスキャンしようとしましたが、これは動作しません。

do 
{ 
    printf("Insert the number you want to search:\n"); 
    numero = getInputFromUser(); 
} while (for (i = 0; i < numAlunos; i++) // This is where I need help 
      numero != vAlunos[i].numero) 

ループ状態の一部としてアレイをスキャンするにはどうすればよいですか?

+2

eが見つかったかどうかを検索して返します。 whileループ条件でこの関数を使用することができます。 – pstrjds

+0

私はあなたの質問に言い直しを試み、あなたが言及した問題に焦点を当てるためにそこにあったコードをクリーンアップしようとしました。私が正しく掃除していない場合は、それをさらに編集するか、私が行ったことを自由に展開してください。 – pstrjds

答えて

2

C99を使用している場合、stdbool.hにアクセスすることができます。ブール型を使用することもできます。代わりに、boolの代わりにtypedef、#define、またはintで0と1を返します。

構造体の配列と配列の長さ変数がグローバルであることを前提にしていますが、そうでない場合は、この関数を変更して引数として渡すことができます。

bool checkForValue(int numeroToSearch) // Guessing int, but change as needed 
{ 
    int i; 
    for (i = 0; i < numAlunos; i++) 
    { 
     if(numeroToSearch == vAlunos[i].numero) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

次に、あなたがこのようにそれを使用することができるはずです。

do 
{ 
    printf("Insert the number you want to search:\n"); 
    number= validar_insert (2150001, 2169999);//check if the input is between this values 

    printf("That number doeste exist.\n"); 
    printf("Enter another number.\n"); 
}while (!checkForValue(numero)) 
+0

私はあなたが物事を除いて言ったことをすべて得ます:checkForValue関数でそれを使用するにはどうすれば "numeroToSearch"を得ることができますか?私はループを使用している関数から戻す必要がありますか? I –

+0

@ネルソンシルヴァ - あなたはそれを関数に渡します。私が投稿したdo-whileループコードを見ると、私は 'numero'を渡しているのを見ています。私は関数内で 'numeroToSearch'と呼んで、それが何であるかを明確にしました。私が追加したdo-whileループは、あなたのサンプルコードから直接取ったものです。私がしたのはdo-whileの条件でリストアップしたforループを取り、それを関数の次の条件do-while。 – pstrjds

1

あなたはコンパイラの拡張機能を使用して気にしない場合は、GCCとクランの両方が条件内に埋め込むことができますstatement-expressionsを提供します。目を実行する新しい機能を書く

do { 
    printf("Insert the number you want to search:\n"); 
    numero = getInputFromUser(); 
} while (({ 
    int i = 0; 

    while(i < numAlunos && vAlunos[i] != numero) 
     ++i; 

    i == numAlunos; // "return value" of the statement-expressions 
})); 

See it live on Coliru

関連する問題