2017-07-01 18 views
0

私はコーディングのスキルに取り組んできましたが、私はここで旅を始めました。私は1つの場所で立ち往生し、どこに間違っているのか把握しようとしています。コードは次のようになります:Cのプログラミングで指定されたキーまでの配列要素の印刷

#include<stdio.h> 
int main(){ 
    int a[10],i,j,arr_size; 

    printf("Enter the size of the array"); 
    scanf("%d",&arr_size); 

    printf("Enter the array:"); 
    for(i=0;i<arr_size;i++) 
    scanf("%d",&a[i]); 

    //here key is 42 
    //so we'll find the key and print the elements up to that 
    for(j=0;j<arr_size;j++){ 
     if(j==42) 
     break; 

     //loop for the array up to the key 
     for(i=0;i<j;i++) 
     printf(" %d",a[i]); 
    } 

    return 0; 
} 

出力が来た: The output of the above code

出力はループがキーに上がっていることを示し、すなわち、多様な方法1 1 2 1 2 42枚のが、プリント42.今これは変です。

必要な出力は形式にする必要があります。入力は2 42 33

+1

1あなたは42に対して配列のインデックスでのテストをしているように見えます値の場所。 – doynax

+0

*デバッガ*の使い方を学んでください。次に、行ごとにコードをステップ実行して、エラーの内容を確認できます。 –

+0

if(j == 42)の代わりにif(a [j] == 42)を実行してからブレークしたので、コードで編集を行ったので、@doynaxに感謝します。 _ループはthis_ for(i = 0; i Alok

答えて

1

1を与えられている1 2場合にのみ、あなたは42のために、配列に値をチェックしません、あなたはインデックスをご確認ください。

がネストされているので、ループで印刷される理由があります。がループします。配列の複数の部分を印刷します。

は、代わりに、ネストされたループの、あなたは

for (int j = 0; j < arr_size && a[j] != 42; ++j) 
{ 
    printf(" %d", a[j]); 
} 

のようなシンプルな何かができる、私はまた、あなたがarr_sizeがあなたのアレイの範囲外ではないことを確認するためのチェックを追加することをおすすめします。

+0

として与えている場合のみです。@Ajayすべきではありませんか? – GoodDeeds

+0

@ほとんどのプログラマのおい、あなたのコードは非常に効率的ですが、私はそれについてはあまりよく分かりませんが、簡単な質問をしたいと思います。 **人々はコード内でj ++を使用しているので、++ jはどのようにループで動作しますか?**あなたがそれについていくつかの詳細を述べると感謝します。 – Alok

+1

@AlokKumar 'j ++'と '++ j'の最終結果は同じですが、' j ++ 'は' j'の* old *値を返す必要があります。つまり、生成された)変数。私は結果が無視されるこの具体的なケースは、良いコンパイラは同じに両方を最適化できる必要があります。 '++ j'を使うことはちょっとした習慣です。 –

1

ブラケットが正しく配置されていません。これは、あなたが探している:

#include<stdio.h> 
int main(){ 
    int a[10],i,j,arr_size; 

    printf("Enter the size of the array"); 
    scanf("%d",&arr_size); 

    printf("Enter the array:"); 
    for(i=0;i<arr_size;i++) 
    scanf("%d",&a[i]); 

    //here key is 42 
    //so we'll find the key and print the elements up to that 
    for(j=0;j<arr_size;j++){ 
     if(a[j]==42) 
      break; 
    } 
    //loop for the array up to the key 
    for(i=0;i<j;i++) 
    printf(" %d",a[i]); 


    return 0; 
} 
+0

ありがとうございます@ Arvindsinc2、それは働いた! – Alok

5

これを試してみてください。..

#include<stdio.h> 
int main(){ 
    int a[10],i,j,arr_size; 

    printf("Enter the size of the array"); 
    scanf("%d",&arr_size); 

    printf("Enter the array:"); 
    for(i=0;i<arr_size;i++) 
    scanf("%d",&a[i]); 

    //here key is 42 
    //so we'll find the key and print the elements up to that 
    for(j=0;j<arr_size;j++){ 
     if(a[j]==42) 
      break; 
    } 
    //loop for the array up to the key 
    for(i=0;i<j;i++) 
    printf(" %d",a[i]); 


    return 0; 
} 

このコードがrequied出力が得られます。2

+0

ありがとう@ニチン。出来た!! – Alok

関連する問題