2013-11-20 2 views
0

У меня есть размерный массив, в котором хранятся координаты (xy) int arr[3][3]. Как выполнять вычисления только с одним из размеров массива?Вычислять только первые элементы измерения в массиве с двумя измерениями?

Если я заинтересован в среднее значение х координат я бы:

float sumX = (float) arr[0] + arr[1] + arr[3]/3.0f;

Когда я делаю это я получаю ошибку invalid cast from type 'int*' to type 'float'. Как мне не разрешить это делать?

+1

Он должен быть 'обр [0] [0] + обр [0] [1 ] + .... ' – Anand

+1

Также выражение, которое вы записываете для суммы, неверно. Ваш '(float)' применяется только к первому члену, и вы должны иметь paranthesis вокруг суммы. –

+1

Обратите внимание, что arr [3] находится за пределами ваших границ массива. –

ответ

1

Предполагая, что только первый элемент каждой строки содержит й-ординату, вы должны сделать что-то вроде этого -

float sumX = (arr[0][0] + arr[1][0] + arr[2][0])/3.0f; 

arr[0][0] дает значение, сохраненное в первом элементе первой строки в массиве , arr[1][0] дает вам значение, хранящееся в первом элементе второй строки в вашем массиве, и так далее. Измените указанное выражение в соответствии с вашими потребностями.

1

Try:

float sumX = (float) (arr[0][0] + arr[1][0] + arr[2][0])/3.0f; 

Вы должны скобки в группе, что получает прооперированы и вам необходимо указать одно значение, а не подряд.

+0

есть ли необходимость? деление числа на десятичное число приведет к десятичному значению –

+0

В моей профессиональной среде мы стараемся избегать неявных бросков по нескольким причинам: 1) Ясность, если есть явное приведение, нет сомнений в том, что вы ищете и 2) MISRA правила против него, потому что _some_ неявные отбрасывания могут вызвать проблемы, поэтому, если у вас их нет ... –

+0

Но при вводе 'arr [0] [0] + arr [1] [0] ...' он рассчитает x + y. Я хочу только вычислить x и игнорировать y. – user3005287

-1

Адрес будет возвращен в этом случае

float sumX = (float) arr[0] + arr[1] + arr[3]/3.0f; 

Чтобы вернуть значение с помощью оператора Косвенность

float sumX = (float) (*arr[0] + *arr[1] + *arr[3])/ 3.0f; 
+0

** КРЕПЛЕНИЯ ** необходимы! –

+0

, где требуются скобки –

+0

@SteveBarnes Работает отлично без него Смотрите здесь http://ideone.com/rZov0b –

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