2016-08-22 17 views
-2

乱数のリストを生成しバブルソートすることを目的としたプログラムをコピーしています。これはコードです:宿題添え字の値が配列でもポインタでもベクトルでもない

#include <stdio.h> 

    #define MAX 10 

    int a; 
    int rand_seed=10; 

    int rand() 
    { 
     rand_seed = rand_seed * 1103515245 + 12345; 
     return (unsigned int)(rand_seed/65536) % 32768; 
    } 

    void main() 
    { 
    int i,t,x,y; 

//fill array 
for (i = 0; i < MAX;i++) 
    { 
     a = rand(); 
     printf("%d\n",a); 
    } 
/* bubble sort the array */ 


    for (x = 0; x < MAX-1; x++) 
     for (y = 0; y < MAX -x - 1; y++) 
      if (a > a[y+1]) { 
      t = a; 
      a = a[y+1]; 
      a[y+1] = t; 
      } 


printf("----------------\n"); 
for(i = 0; i < MAX;i++) 
    printf("%d\n",a); 
    } 

ここに全体を投稿するのは嫌ですが、どこに問題があるのか​​わかりません。

+1

int a[10]; for (i = 0; i < MAX;i++) { a[i] = rand(); printf("%d\n",a[i]); } 

そしてまた、この部分がに変更されるだろうか?コンパイルエラーの場合は、問題がどこにあるかを正確に伝えておく必要があります。間違った結果を出している場合は、そのような重要な情報を質問に含める必要があります。 –

+0

変数は、intではなく配列として定義する必要があります。int a [MAX]; – AnatolyS

答えて

0

あなたのコンパイラは既に攻撃的な行を指摘していたと思います。コード

if (a > a[y+1]) 

では、以前

int a; 

、それはintとして定義された一方で、配列としてaを使用しようとしているあなたはaは配列になりたい場合は、持っていますそれを配列として定義し、メンバーをrand()などを使用して設定します。

0

aを配列にしたいと思っています。その場合には、これを試してみる:あなたは問題があると知っていますどのように

if (a[y] > a[y+1]) { 
    t = a[y]; 
    a[y] = a[y+1]; 
    a[y+1] = t; 
} 
関連する問題