2015-09-02 2 views
0

Это мой код, и я не могу узнать, где я иду не так.invalid types 'int * [__ complex__ int]' для индекса массива

void heapify(int arr[], int n) 
{ 
int i=n/2 , j, temp; 
for(i=n/2; i>0; i--) 
{ 
    if(arr[2i]<arr[i]) 
    { 
     temp = arr[2i]; 
     arr[2i]= arr[i]; 
     arr[i]= temp; 
    } 
    if(arr[2i+1]<arr[i]) 
    { 
     temp = arr[2i]; 
     arr[2i]= arr[i]; 
     arr[i]= temp; 
    } 
} 
printf("Output:\n"); 
for(j=1; j<=n; j++) 
{ 
    printf("%d ", arr[j]); 
} 
} 

int main() 
{ 
int arr[11]={0,12,54,21,74,1,46,91,13,76,22}, n=10; 
heapify(arr, n); 
return 0; 
} 

Он подбрасывает следующее сообщение об ошибке:

[Error] invalid types 'int*[__complex__ int]' for array subscript 

Пожалуйста help..Am изо всех сил, чтобы реализовать здесь пирамидальной сортировки. Заранее спасибо

ответ

3

В C 2i - это комплексное (мнимое) число (сообщение об ошибке компилятора на самом деле говорит вам именно об этом). Вам нужно использовать оператор * для умножения. Измените все вхождения arr[2i] на arr[2*i], например.

arr[2i] = arr[i]; 

должно быть:

arr[2*i] = arr[i]; 
+0

Спасибо большое! это помогло, и стоило это знать! –

+0

Добро пожаловать. Я рекомендую вам получить [хорошую вводную книгу на C] (http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list) и изучить ее так, чтобы вы можете ознакомиться с основами языка - таким образом вы будете более продуктивными и учитесь быстрее. –

Смежные вопросы