Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Построчная обработка



К такому типу относятся задачи, в которых для каждой строки матрицы требуется найти её некоторый параметр. Таким параметром может быть, например, сумма, количество всех элементов строки или элементов с некоторым условием, наименьший (наибольший) элемент среди всех или части элементов строки и т. д. К этому классу можно отнести и задачи типа “есть ли нуль в строке матрицы?”. Их особенность в том, что не обязательно надо анализировать все элементы строки.

В таких программах внешний цикл строится по номеру строки, а в одном или нескольких внутренних циклах обрабатывается строка как одномерный массив. При этом полученные характеристики строк можно запоминать в одномерном массиве размерности 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...