2015-04-23 2 views
0

как удалить эту ошибку, пробовал все .... Эта программа о поиске 5 ближайшего числа из массива ... в основной части я просто беру массив, num и размер и проходит через функциюиндексированное значение не является ни массивом, ни указателем, ни вектором в c

void printclosest(int arr[], int x, int n) 
{ 
int diff[30]; 
int i,j,k,p,a; 
for (i = 0; i < n; ++i) 
    { 
     for (j = i + 1; j < n; ++j) 
     { 
      if (arr[i] > arr[j]) 
      { 
       a = arr[i]; 
       arr[i] = arr[j]; 
       arr[j] = a; 
      } 
     } 
    } 

for(i=0;i<n;i++) 
{ 
diff[i]=abs(a[i]-x); 

} 


for (k = 0; k < n; ++k) 
    { 
     for (p = k + 1; p < n; ++p) 
     { 
      if (diff[k] > diff[p]) 
      { 
       a = arr[k]; 
       arr[k] = arr[p]; 
       arr[p] = a; 
      } 
     } 
    } 
    for(i=0;i<5;i++) 
    { printf("%d",arr[i]); 
    } 
    } 
+1

Пожалуйста, включите номер строки при отправке сообщений об ошибке! – 2501

+1

Просьба дать более подробную информацию о том, что вы ожидаете. И, пожалуйста, правильно отформатируйте свой код. – Martze

+0

Прежде всего, пожалуйста, отформатируйте свой код, чтобы он был доступен для чтения. Во-вторых, компилятор должен сообщить вам, в какой строке находится ошибка. Какая линия? – rost0031

ответ

3

a объявлен int, но вы пытаетесь использовать его как массив здесь:

diff[i]=abs(a[i]-x); 
+0

благодарит приятеля за помощь, которую он скомпилировал, но я думаю, что моя логика некорректна. Я попытался получить 5 ближайших чисел из массива. Можете ли вы сказать мне, где я ошибся – avenger

+0

@avenger Отправьте новый вопрос, включите детали и отформатируйте код. И прочитайте это: http://stackoverflow.com/help/how-to-ask – 2501

+0

Вам предоставляется отсортированный список из N чисел и числа Num. Напишите программу, чтобы найти пять чисел, которые наиболее близки (численно) к Num. Число x в массиве ближе всего к Num, если | Num-x | является наименьшим среди всех таких х возможных. – avenger

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

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