Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Задача 4.1. Среднее арифметическое и количество положительных элементов





Написать программу, которая для целочисленной матрицы 10 X 20 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке.

 

Алгоритм решения этой задачи очевиден. Для вычисления среднего арифметического элементов массива требуется найти их общую сумму, после чего разделить ее на количество элементов. Порядок просмотра массива (по строкам или по столбцам) роли не играет. Определение количества положительных элементов каждой строки требует просмотра матрицы по строкам. Обе величины вычисляются при одном просмотре матрицы. Блок-схема этого алгоритма приведена на рис. 4.1.

 

 


Рис. 4.1. Блок-схема алгоритма решения задачи 4.1

 

#include < iostream.h> #include < iomanip.h> void main () { const int nrow = 10, ncol = 20; int a[nrow][nco1]; int i. J; cout < < " Введите элементы массива: " < < endl; for (i = 0; i < nrow; i++) for (i = 0; j < ncol; j++) cin > > a[i][J]; for (i = 0; i < nrow; i++) { for (j = 0; j < ncol; j++) cout < < setw(4) < < a[i][j] < < " "; cout < < endl; } int n_pos_el; float s = 0; for (i = 0; i < nrow; i++) { n_pos_el = 0; for (j = 0; j < ncol; j++) { s +- a[i][j]; if (a[i][j] > 0) n_pos_el++; } cout < < " Строка: " < < i < < " кол-во: " < < n_pos el < < endl; } s /= nrow * ncol; cout < < " Среднее арифметическое: " < < s < < endl; }

 

 

Размерности массива заданы именованными константами, что позволяет легко их изменять. Для упрощения отладки рекомендуется задать небольшие значения этих величин или приготовить тестовый массив в текстовом файле и изменить программу так, чтобы она читала значения из файла (см. задачу 4.2, с. 80, а также Учебник, с. 276, 280).

 

Составляйте тестовые примеры таким образом, чтобы строки массива содержали разное количество отрицательных элементов (ни одного элемента, один и более элементов, все элементы).

 

При вычислении количества положительных элементов для каждой строки выполняются однотипные действия: обнуление счетчика, просмотр каждого элемента строки и сравнение его с нулем, при необходимости увеличение счетчика на единицу, а после окончания вычислений — вывод результирующего значения счетчика. Впрочем, это дольше описывать на естественном языке, чем в программе.

 

Тем не менее, здесь следует обратить внимание на два момента. Во-первых, требуется еще до написания алгоритма решить, каким образом будут храниться результаты. Со средним арифметическим все ясно, для его хранения необходима одна простая переменная вещественного типа. А вот количество положительных элементов для каждой строки свое, и в результате мы должны получить столько значений, сколько строк в матрице. В данной задаче мы можем отвести для хранения этих значений одну-единственную переменную целого типа, поскольку они вычисляются последовательно, после чего выводятся на экран. Однако в других задачах эти значения могут впоследствии потребоваться одновременно. В этом случае для их хранения придется описать целочисленный массив с количеством элементов, равным количеству строк матрицы.

 

Второй важный момент — место инициализации суммы и количества. Сумма обнуляется перед циклом просмотра всей матрицы, а количество положительных элементов — перед циклом просмотра очередной строки, поскольку для каждой строки его вычисление начинается заново. Начинающие часто либо вообще забывают про инициализацию накапливаемых в цикле величин, либо неверно определяют ее место в программе.

 

СОВЕТ

Записывайте операторы инициализации накапливаемых в цикле величин непосредственно перед циклом, в котором они вычисляются.

 

После ввода значений предусмотрен их контрольный вывод на экран. Для того чтобы элементы матрицы располагались один под другим, используется манипулятор setw(), устанавливающий для очередного выводимого значения ширину поля в четыре символа. Для использования манипулятора необходимо подключить к программе заголовочный файл < iomanip.h>. После каждой строки выводится символ перевода строки endl.

 

При написании вложенных циклов следите за отступами. Все операторы одного уровня вложенности должны начинаться в одной и той же колонке. Это облегчает чтение программы и, следовательно, поиск ошибок. По вопросу расстановки фигурных скобок существуют разные мнения специалистов. В настоящее время наиболее распространенными являются два стиля: стиль 1TBS (One True Bracing Style), которого придерживались основоположники языка С - Б. Керниган (Brian Kerm-ghan) и Д. Ритчи (Dennis Ritchie), и стиль Алмена (Eric Altaian). Приведем отрывок кода, написанного в стиле 1TBS:

 

for (j = 0; j < MAX_LEN; j++) { foo(); }

 

Этот же отрывок в стиле Алмена выглядит так:

 

for (j = 0; j < MAX_LEN; j++) { foo(); }

 

Наш выбор, естественно, остановится на единственно верном стиле.

 







Дата добавления: 2014-11-10; просмотров: 3459. Нарушение авторских прав; Мы поможем в написании вашей работы!




Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...


Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Концептуальные модели труда учителя В отечественной литературе существует несколько подходов к пониманию профессиональной деятельности учителя, которые, дополняя друг друга, расширяют психологическое представление об эффективности профессионального труда учителя...

Конституционно-правовые нормы, их особенности и виды Характеристика отрасли права немыслима без уяснения особенностей составляющих ее норм...

Толкование Конституции Российской Федерации: виды, способы, юридическое значение Толкование права – это специальный вид юридической деятельности по раскрытию смыслового содержания правовых норм, необходимый в процессе как законотворчества, так и реализации права...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

ПУНКЦИЯ И КАТЕТЕРИЗАЦИЯ ПОДКЛЮЧИЧНОЙ ВЕНЫ   Пункцию и катетеризацию подключичной вены обычно производит хирург или анестезиолог, иногда — специально обученный терапевт...

Studopedia.info - Студопедия - 2014-2025 год . (0.011 сек.) русская версия | украинская версия