2016-12-10 7 views
0

私は練習しようとしていますCプログラミングは非常に基本的なものです。 whileループを使用してうまく動作する配列で検索しようとしましたが、Forループを使用しようとすると、実際の出力が得られません。ここに私が試したし、ほぼ正常に動作したコードは次のとおりです。アレイを検索すると適切な出力が得られません

#include<stdio.h> 
int main() 
{ 
    int arr[100], element, num, i; 
    int cnt = 1; 

    printf("Enter no of elements: "); 
    scanf("%d", &num); 

    printf("\nEnter the values: "); 
    for(i = 0; i < num; i++) 
    { 
     scanf("%d", &arr[i]); 
    } 

    printf("\nEnter the element to be searched: "); 
    scanf("%d", &element); 

    for(i = 0; i < num; i++) 
    { 
     if(arr[i] == element) 
     { 
      printf("\nNumber found at the index = %d", i + 1); 
     } 
     else 
     { 
      /**To prevent repeated output but trying to remove this section - Starts**/ 
      if(cnt == 1) 
      { 
       printf("\nNumber not found"); 
      } 
      cnt += 2; 
      /**To prevent repeated output but trying to remove this section - Ends**/ 
     } 
    } 
    return 0; 
} 

検索値が一致したときに問題がある、それは同様にマッチした値のインデックスを取得し、それは「ナンバーが見つからないメッセージを出力します'。値が一致しない場合は、「番号が見つかりません」が返されます。ここで私は検索値のために取得しています出力されます:

array_search

+1

ループ内で 'cnt'の値を再初期化する必要があります。 – t0mm13b

+1

さて、それは明らかです:番号が見つからないというメッセージは、あなたが探している番号ではない配列に数字がある場合に常に現れます。ほとんどの配列でそうです。番号が配列内にあるかどうかだけを知るか、配列内のすべての要素を探したり見つけたりすることはできません。 –

答えて

1

固定プログラムがまだされている場合 プリントが見つかりません:

#include<stdio.h> 
int main() 
{ 
    int arr[100], element, num, i; 
    int cnt = 1; 

    printf("Enter no of elements: "); 
    scanf("%d", &num); 

    printf("\nEnter the values: "); 
    for(i = 0; i < num; i++) 
    { 
     scanf("%d", &arr[i]); 
    } 

    printf("\nEnter the element to be searched: "); 
    scanf("%d", &element); 

    for(i = 0; i < num; i++) 
    { 
     if(arr[i] == element) 
     { 
      printf("\nNumber found at the index = %d", i + 1); 
      cnt=0; 
      break; //break the loop 
     } 
    } 
    if(cnt==1){ 
     printf("\nNumber not found"); 
    } 
    return 0; 
} 

出力:数として

Enter no of elements: 4 

Enter the values: 20 10 40 30 

Enter the element to be searched: 10 

Number found at the index = 2 

は、CNT = 0を作成し、ループを破るました。 afterループでは、cntの値が1のままであることを確認できます。これは、番号が見つからないことを意味します。

1

それとも、単に他の部分を除去してからループの後に、cntはまだ1であるかどうかを確認

if(arr[i] == element) 
    { 
     printf("\nNumber found at the index = %d", i + 1); 
     cnt = 0; 
     break; 
    } 

を行うことができます。それは1

関連する問題