2017-12-06 4 views
1

これは、数値を昇順に並べる非常に簡単なプログラムです。今ここで私はそれがどのように整数とポインタ、すべてのforループで比較されていることがわかりません。私は途中でノブです。あなたはiinti < numbernumberを使用している'for loop'は、数字を昇順に並べ替えます。 [ERROR]ポインタと整数の比較

#include <stdio.h> 

int main() 
{ 

    int number[100],total,i,j,temp;; 

    printf("Enter the quantity of the numbers you want \n"); 
    scanf("%d",&total); 

    printf("Enter the numbers \n"); 
    for(i=0; i<total; i++){ 

     scanf("%d",&number[i]); 
    } 

    for(i=0; i < (number-1); i++){ 

     for(j=(i+1); j < number; j++){ 

      if(number[i]>number[j]){ 
       temp = number[i]; 
       number[i] = number[j]; 
       number[j] = temp; 
      } 

     } 

    } 
    for(i=0; i < number; i++){ 

     printf("%d \n", number[i]); 
    } 



    return 0; 
} 
+2

あなたは機能の 'のscanf()'家族のいずれかを呼び出す整数 –

+0

ではありません 'number'、と比較されます。必ず確認してください戻り値はパラメータ値ではなく、操作が成功したことを保証します。 – user3629249

+0

:1)公理に従う:* 1行につき1つのステートメント、ステートメントごとに1つの変数宣言を書く* – user3629249

答えて

0

array

ちょうどにそれらの行を変更している

for(i=0; i < (total-1); i++){ 

     for(j=(i+1); j < total; j++){ 


for(i=0; i < total; i++){ 
+0

すみませんでした。 –

+0

あなたの「修正」を適用し、あなたの答えから得られるコードをコンパイルすることを検討しましたか? – EOF

+0

コース!私はすっごく愚かな笑、あなたにすっごく感謝!感謝します!出来た! :D – Monty

0

次提案のコード以下:

  1. 適切にチェックエラーの場合
  2. が正しく適切に変数のスコープを最小限にstderr
  3. にエラーメッセージを出力
  4. きれい
  5. が所望の機能を実行し、カンマの後、セミコロンの後に、括弧内の、C演算子の周りに適切な水平方向の間隔を組み込んでコンパイル
  6. はVLA(可変長配列)を使用しているため、数字の数はほとんどすべての正数になります。
  7. はコードブロックを区切ります(for、else、 ...ん、しばらく
  8. はランダムな空白行に
  9. 文書が含まれていない単一の空白ラインを介して)スイッチ、ケース、デフォルト、一方で各ヘッダファイルが含まれている理由
  10. は、ユーザーが否定を入力することはできません。
  11. の公理に従います。1行につき1つの文と、1文につき1つの変数宣言だけです。

そして今、提案コード:

#include <stdio.h> // scanf(), perror(), printf() 
#include <stdlib.h> // exit(), EXIT_FAILURE 

int main(void) 
{ 
    int total; 

    printf("Enter the quantity of the numbers you want \n"); 
    if(1 != scanf("%d", &total)) 
    { 
     perror("scanf for count of numbers failed"); 
     exit(EXIT_FAILURE); 
    } 

    // implied else, scanf successful 

    if(!total) 
    { // then 0 entered 
     printf("Exiting, no numbers to enter\n"); 
     return 0; 
    } 

    // implied else, some numbers to enter 

    int number[ total ]; // << uses the VLA feature of C 

    for(unsigned i = 0; i < total; i++) 
    { 
     printf("Enter number %u: ", i+1); 

     if(1 != scanf("%d", &number[i])) 
     { 
      perror("scanf for a number failed"); 
      exit(EXIT_FAILURE); 
     } 

     // implied else, scanf successful 
    } 

    for(int i = 0; i < (total - 1); i++) 
    { 
     for(int j = (i+1); j < total; j++) 
     { 
      if(number[i] > number[j]) 
      { 
       int temp = number[i]; 
       number[i] = number[j]; 
       number[j] = temp; 
      } 
     } 
    } 

    for(unsigned i = 0; i < total; i++) 
    { 
     printf("%d \n", number[i]); 
    } 

    return 0; 
} // end function: main 
+0

これは非常に役に立ちます。ありがとう! – Monty

関連する問題