2017-02-22 26 views
-1

Я хочу найти среднюю точку массива в C say: {2,5,7,23,1,8,3,8,2} с ожидаемым результатом 1. Также, если массив существует даже в случае {2,6,9,231,62,3}, я ожидаю получить любую из средние значения - 9 или 231 в этом случае.Найти среднюю точку массива в c

Я совершенно не уверен, как это сделать.

+2

Обычно 'длина/2' является серединой. – tkausl

+2

Вы забыли задать вопрос, поэтому неясно, какая вам нужна помощь. Пожалуйста, по крайней мере, напишите какой-нибудь код с слотом, где будет найден код для поиска середины. –

ответ

2

Согласно вашему описанию проблемы, независимо от того, имеет ли ваш массив четное или нечетное число элементов, индекс среднего элемента всегда имеет длину/2.

int main() { 
    int a[] = {2,5,7,23,1,8,3,8,2}; 
    //Figure out the size of the array 
    int n = sizeof(a)/sizeof(int); 
    printf("The mid point is %d", a[n/2]); 
} 
+0

Спасибо! Это отвечает на мой вопрос. Я не знаю, почему я получил вниз голосов. Но спасибо за ваш ответ. – assetCorp

+0

Добро пожаловать. Я не ответил на ваш вопрос. Но не волнуйся. Иногда бывает. – VHS

+1

'sizeof (a)' здесь размер указателя. 'arrayMidpoint()' не создает приемлемого результата. – chux

2

Вам нужно:

  • Найти размер n массива. Обычно делается sizeof array/sizeof array[0].
  • Индекс array[n/2], чтобы найти среднюю точку.

Вот пример:

#include <stdio.h> 

#define SIZE(x) (sizeof x/sizeof x[0]) 

int main(void) { 
    int array1[] = {2,5,7,23,1,8,3,8,2}; 
    int array2[] = {2,6,9,231,62,3}; 

    printf("First midpoint = %d\n", array1[SIZE(array1)/2]); 
    printf("Second midpoint = %d\n", array2[SIZE(array2)/2]); 

    return 0; 
} 

который выводит:

First midpoint = 1 
Second midpoint = 231