2015-12-04 5 views
0

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

Написать функцию C, которая принимает три параметра: адрес двумерного массива типа «Int», число строк в массиве и количество столбцов в массиве. Попросите функцию вычислить сумму квадратов элементов.

Например, для массива 'НУМС', который на рисунке ниже:

23 12 14 3 

    31 25 41 17 

вызов функции mmight быть sumsquares (НУМС, 2, 4); и возвращаемое значение будет 4434. Напишите короткую программу для проверки вашей функции.

До сих пор моя программа состоит из:

#include<stdio.h> 
int addarrayA(int arrayA[],int highestvalueA); 

int addarrayA(int arrayA[],int highestvalueA) 
{ 
int sum=0, i; 
for (i=1; i<highestvalueA; i++) 
    sum = (i*i); 

return sum; 
} 

int main(void) 
{ 
int arr [2][4] = {{ 23, 12, 14, 3 }, 
       { 31, 25, 41, 17 }}; 

printf("The sum of the squares: %d. \n", addarrayA (arr[2], arr[4])); 

return 0; 
} 

Ответ Я получаю огромное отрицательное # но это должно быть 4434. Любая помощь очень ценится!

+0

Whi ch огромное отрицательное число? – Pikamander2

+0

Вы не передаете 2D-массив, и ваши functios тоже не принимают его. – Olaf

+2

Вы не используете параметр 'arrayA' в своей функции, который, я полагаю, будет тем, что вы должны делать. – emlai

ответ

1

Как вы упомянули в вопросе, вам нужно sumsquares(array, 2, 4);, но ваша функция не делает этого.

Смотрите ниже код:

#include<stdio.h> 

int sumsquares(int* arrayA,int row, int column); 

int sumsquares(int* arrayA,int row, int column) 
{ 
    int sum=0, i; 
    for (i=0; i<row*column; i++) 
     sum += (arrayA[i]*arrayA[i]); 

    return sum; 
} 

int main(void) 
{ 
    int arr [2][4] = {{ 23, 12, 14, 3 }, 
         { 31, 25, 41, 17 }}; 

    printf("The sum of the squares: %d. \n", sumsquares (&arr[0][0], 2, 4)); 

    return 0; 
} 

Выход:

The sum of the squares: 4434. 
+0

А, я вижу. СПАСИБО!! – Fearphones

+0

@Fearphones Добро пожаловать! :) – GNKeshava

0

Мы могли бы использовать этот синтаксис для создания многомерного массива в C:

arr = (int **) malloc ((n *sizeof(int *)); 
Смежные вопросы