![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
К такому типу относятся задачи, в которых для каждой строки матрицы требуется найти её некоторый параметр. Таким параметром может быть, например, сумма, количество всех элементов строки или элементов с некоторым условием, наименьший (наибольший) элемент среди всех или части элементов строки и т. д. К этому классу можно отнести и задачи типа “есть ли нуль в строке матрицы?”. Их особенность в том, что не обязательно надо анализировать все элементы строки.
В таких программах внешний цикл строится по номеру строки, а в одном или нескольких внутренних циклах обрабатывается строка как одномерный массив. При этом полученные характеристики строк можно запоминать в одномерном массиве размерности n или выводить сразу по мере получения.
Например, пусть задана матрица A[n][m], в которой Aij — оценка i –го студента на j –м экзамене.
Пример 7. Cформируем массив S[n], каждый элемент которого содержит средний балл одного студента:
float S[n], Sum;
for (int i=0; i<n; i++)
{ Sum=0; for (int j=0; j<m;) Sum+=A[i][j++];
S[i]=Sum/m;
}
Здесь важно обратить внимание на следующее:
· оператор Sum=0; должен располагаться между операторами for, так как для каждой строки суммирование необходимо начинать с начала;
· важны также расстановка фигурных скобок и место оператора S[i]=Sum/m; Он должен выполняться n раз и поэтому располагается внутри внешнего, но вне внутреннего цикла. В качестве упражнения предлагается рассмотреть другие, в том числе неправильные, варианты расстановки фигурных скобок;
· массив S имеет размерность n,и индекс его элемента i, а не j, т. е. совпадает с номером строки, c параметром внешнего цикла;
· массив S и переменная Sum должны объявляться с типом float. Если объявить их как int, то в массиве сохранится результат целочисленного деления без дробной части. Например, при делении 37/5 вместо 7.4 получили бы целое число 7. Недостаточно объявить только массив как float, оставив int Sum. Это проблему типов данных можно решить и так: float S[n]; int Sum; … S[i]=(float)Sum/m; Здесь при вычислении выражения переменная Sum временно приводится (преобразуется) к вещественному типу. При этом в других операциях и перед и после этого присваивания она остаётся целочисленной.
Дата публикования: 2015-02-18; Прочитано: 191 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!