Показать сообщение отдельно
Старый 07.01.2008, 01:40     # 3
Voland25
Junior Member
 
Регистрация: 28.11.2003
Адрес: Израиль
Пол: Male
Сообщения: 67

Voland25 МолодецVoland25 МолодецVoland25 Молодец
По поводу номера 1 - неясна задача. По вопросу получается, что задан массив неизвестного размера, и требуется найти среднюю длину строки и столбца. Я предполагаю, что размер массива известен, а задача состоит в нахождении среднего значения по столбцу и по строке. В этом случае логика проста:

#DEFINE ROWS <кол-во строк>
#DEFINE COLS <кол-во колонок>

int myArray[ROWS][COLS];
int tmpArr[COLS];
int i, j, sum;

// предполагаем что массив заполнен,
// инициируем вспомогательный
for (i = 0; i < COLS; i++)
tmpArr[i] = 0;

// Вычисляем среднее по строкам, и готовим
// массив под вычисление средних по столбцам
for (i = 0; i<ROWS; i++) {

sum = 0;

for (j = 0; j < COLS; j++) {

tmpArr[j] += myArray[i][j]; // суммирование столбца

sum += myArray[i][j]; // суммирование строки
}

printf("\nAverage for row %d is %f", i, (float) (sum/COLS));
}

// Среднее по столбцам
for (i = 0; i < COLS; i++)
printf("\nAverage for column %d is %f", i,
(float) (tmpArr[i]/ROWS));

Не ручаюсь, правда, за безошибочность синтакса - набирал без компилятора вообще, из головы.

По поводу второго вопроса - функция должна также получать размер массива, иначе есть все шансы грохнуться на нелегальном доступе к памяти. Кроме того, неясна формулировка "все полученные числа". В С нет множественного возврата из функции, если только она возвращает не массив. Есть вариант, когда каждый последующий вызов возвращает следующее число в массиве. Тогда что-то вот примерно такое:

int func(int *myArray, int size) {

static int position;

if (position >= size || position < 0)
position = 0;

return myArray[position++];
}

третий вопрос - цикл на использование функции circle со сначала возрастающим радиусом, а потом - так же понижающимся.
__________________
"Inter arma leges silent" - "молчат законы при звоне оружия"
Voland25 вне форума