Инфоурок Информатика КонспектыНахождение суммы элементов заданного столбца (строки) матрицы

Нахождение суммы элементов заданного столбца (строки) матрицы

Скачать материал

Тема: "Нахождение суммы элементов заданного столбца (строки) матрицы".

Цель работы: 

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

 

Количество часов на выполнение работы

Продолжительность выполнения данной практической работы составляет 2 академических часа.

 

Оборудование

Аппаратное обеспечение: персональный компьютер следующей конфигурации:

-        процессор не ниже Intel i3;

-        жесткий диском со свободным объемом не менее 1 Гб;

Программное обеспечение:

-        операционная система Windows 7 / 8 / 8.1 / 10. 

-        установленная среда программирования PascalABC.

 

Краткие теоретические сведения

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

Массив – это регулярная структура данных, которая состоит из пронумерованных компонент одного и того же типа. Этот тип мы будем называть базовым типом.

Массивы могут быть одномерными:

и многомерными (например, двумерными) :

С точки зрения машинной реализации, все массивы – одномерные, разница лишь в том, как пронумерованы элементы массива. Описание одномерного массива, если считать его элементы целыми числами выглядит следующим образом:

A : array [1..8] of integer;

здесь array – ключевое слово, которое и обозначает собственно массив, в квадратных скобках указан диапазон первого и единственного индекса.

В Pascal’е в качестве диапазона индекса может выступать любой отрезок перечислимого типа, например ‘A’..’H’, либо 0..7. Однако на практике чаще всего удобнее в качестве индексов использовать отрезок целого типа, причем нижний (меньший) индекс разумно выбирать единицей или нулем.

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

Const N = 8;

Var A : array [1..N] of integer;

и в дальнейшем в программе при работе с массивом использовать не конкретные числа, а константы, которые определяют диапазон индексов, кроме того, программу можно будет легко модифицировать для работы с массивом другой размерности, так как необходимо будет изменить всего лишь одну строчку!

Иногда формальность описания следует развить, выделив описание типа отдельно, это будет абсолютно необходимо, если вы собираетесь использовать в процедурах и функциях параметры-массивы.

Const N = 8;

Type TA = array [1..N] of integer;

Var A : TA;

Дополнительные удобства этого подхода заключаются в том, что массивы, описанные в разных местах как массивы типа TA, будут являться совместимыми по типу, а в случае описания массивов A и B одинаковым способом, но без объявления типамассива, они будут считаться несовместимыми. Например,

Const N = 8;

Type TA = array [1..N] of integer;

Var A : TA;

Var B : TA;

здесь A и B – массивы одного и того же типа. А здесь:

Const N = 8;

Var A : array [1..N] of integer;

Var B : array [1..N] of integer;

здесь A и B – массивы будут считаться разных типов. Хотя следующее описание определяет массивы одинаковых типов:

Const N = 8;

Var A,B : array [1..N] of integer;

В качестве базового типа допустим абсолютно любой тип, в том числе и массив, т.е. допустим массив массивов:

Const M = 5; N = 8;

Var A : array [1..M] of array [1..N] of integer;

Подобная ситуация встречается довольно часто, поэтому для нее существует разумное сокращение:

Const M = 5;

N = 8;

Var A : array [1..M,1..N] of integer;

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


Основные приемы работы с массивами

Рассмотрим выполнение элементарных манипуляций с массивами. Самая простая задача – заполнение всех элементов одним и тем же значением:

{Инициализация массива}

for i:=1 to N do A[i]:=0;

Обратите внимание, как осуществляется доступ к элементам массива – после имени массива в квадратных скобках указывается индекс, который может быть произвольным выражением, лишь бы его значение не выходило за указанный при описании диапазон.

Подобная конструкция допустима везде, где допустима простая переменная.

Цикл for – чрезвычайно удобная и полезная вещь при работе с массивами.

Оператор вида for i:=1 to N do – можно «переводить» как «выполнить для всех элементов массива».

Если два массива одного типа, то допустимо присваивание одного массива другому одним оператором:

B:=A;

Следующие два примера показывают, как осуществить ввод-вывод с небольшим сервисом:

{ввод массива}

for i:=1 to N do

begin

write('Ввeдите ',i,'-й элемент: ');

readln(A[i])

end;

 

Из этого примера видно, что массив вводится поэлементно, и как организовать нехитрый сервис. Вывод производится аналогично:

{вывод массива}

for i:=1 to N do writeln ('A[ ',i,']=',A[i]);

 

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

Таким образом, когда мы просмотрим весь массив, окажется, что наша переменная содержит искомое значение:

{определение максимального значения}

max:=A[1];

for i:=2 to N do if A[i]>max then max:=A[i]; writeln('Maximum=',max);

 

Напишем теперь целиком программу, использовав полученные знания:

Program Massiv;

Const N = 10;

Var A : array [1..N] of integer;

i, max : integer;

begin

for i:=1 to N do // Ввод массива

begin

write( 'Ввeдите ',i,'-й элемент: ');

readln(A[i])

end;

max:=A[1]; // Поиск максимального значения

for i:=2 to N do

if A[i]>max then max:=A[i];

writeln( 'Maximum=',max);

end.

 

Первой серьезной задачей программирования, с которой сталкивается начинающий программист – это задача сортировки массива. Под сортировкой понимается упорядочивание элементов массива по возрастанию (или по убыванию) без создания копии массива (т.е. «на месте»).

Самый простой алгоритм – это линейная сортировка.

Проведем последовательно сравнение первого элемента со всеми последующими, при если при очередном сравнении (например сразу 4 и 2) выяснится, что элементы стоят в «неправильном» порядке – переставим их местами, затем продолжим сравнение. По окончании одного прохода, можно сказать, что в первом элементе массива находится минимальный элемент.

Далее применим указанную процедуру к неотсортированному «остатку» массива  до тех пор, пока не переставим два последних элемента.

Алгоритм линейной сортировки очень прост, но не экономичен, среднее число просмотров и перестановок пропорционально квадрату числа элементов (точнее -N2 /2 ).

Приведем программу сортировки. Обратите внимание, что мы использовали массив в качестве параметра процедуры. Для этого необходимо создать тип Massiv. Часто для экономии памяти массив передают через var-параметр, даже если не предполагается его модифицировать в подпрограмме. Т.е. заголовок процедуры print мог бы выглядеть следующим образом:

procedure print (var m : Massiv); .

Program LinerSort;

Const N = 10; // Число элементов массива

Type Massiv = array [1..N] of integer; // Определение типа Massiv

procedure swap(var x,y: integer); // Перестановка элементов местами

var z : integer;

begin

z:=x; x:=y; y:=z;

end;

procedure print(m : Massiv); // Вывод массива

var i : integer;

begin

for i:=1 to N do write(m[i]:5);

writeln; // Новая строка

end;

// Переменные главной программы

var a : Massiv; i,j : integer;

begin

// Заполнение массива случайными числами в диапазоне от 0 до 99

for i:=1 to N do a[i]:=random(100);

print(a); // Вывод массива

for i:=1 to N-1 do // Внешний цикл до N-1 (обратите внимание!)

for j:=i+1 to N do // Внутренний цикл от i+1 (обратите внимание!)

if (a[i]>a[j]) then swap(a[i],a[j]); // Перестановка элементов

print(a); // Вывод отсортированного массива

end.

 

 

Задания по практической работе

1.         Дана матрица размера M ×N и целое число K (1≤K≤M). Найти сумму и произведение элементов K-й строки данной матрицы.

2.         Дана матрица размера M ×N и целое число K (1 ≤ K ≤ N). Найти сумму и произведение элементов K-го столбца данной матрицы.

3.         Дана матрица размера M × N. Для каждой строки матрицы найти сумму ее элементов.

4.         Дана матрица размера M ×N. Для каждого столбца матрицы найти произведение его элементов.

5.         Дана матрица размера M ×N. Для каждой строки матрицы с нечетным номером (1, 3, ...) найти среднее арифметическое ее элементов. Условный оператор не использовать.

6.         Дана матрица размера M × N. Для каждого столбца матрицы с четным номером (2, 4, ...) найти сумму его элементов. Условный оператор не использовать.

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Нахождение суммы элементов заданного столбца (строки) матрицы"

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Хранитель музейных предметов

Получите профессию

Технолог-калькулятор общественного питания

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 672 484 материала в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 01.06.2022 222
    • DOCX 28.1 кбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Волков Роман Юрьевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Волков Роман Юрьевич
    Волков Роман Юрьевич
    • На сайте: 3 года и 5 месяцев
    • Подписчики: 0
    • Всего просмотров: 2127
    • Всего материалов: 6

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Няня

Няня

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Теория и методика обучения информатике в начальной школе

Учитель информатики в начальной школе

300/600 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Сейчас обучается 97 человек из 34 регионов
  • Этот курс уже прошли 223 человека

Курс повышения квалификации

Использование нейросетей в учебной и научной работе: ChatGPT, DALL-E 2, Midjourney

36/72 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 615 человек из 77 регионов
  • Этот курс уже прошли 988 человек

Курс повышения квалификации

Особенности подготовки к сдаче ОГЭ по информатике и ИКТ в условиях реализации ФГОС ООО

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 101 человек из 40 регионов
  • Этот курс уже прошли 808 человек

Мини-курс

Эмоциональная сфера детей: диагностика, особенности и регуляция

4 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 30 человек из 16 регионов
  • Этот курс уже прошли 13 человек

Мини-курс

Разнообразные методы и формы обучения в высшем образовании

3 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психология взаимоотношений, прощения и самопонимания

6 ч.

780 руб. 390 руб.
Подать заявку О курсе
  • Сейчас обучается 134 человека из 54 регионов
  • Этот курс уже прошли 52 человека