Дан двумерный. Примеры решения задач с двумерными массивами, задачи для самостоятельного решения

Пример 3

Дан целочисленный двумерный массив, размерности n х m, найти наименьший элемент массива и номер строки, в которой он находится.

Блок-схема:
Программный код:
Var a: array of integer;
i, j, m, n, min, k: integer;
Begin
Write(‘ сколько строк ?’); Readln(n);
Write(‘ сколько столбцов ?’); Readln(m);
For i:=1 to n do
For j:=1 to m do
begin
write(‘a[‘,i,’,’,j,’]=’); readln (a); {ввод двумерного массива}
end;
min:=a; {минимальный элемент}
k:=1; {номер строки}
For i:=1 to n do
For j:=1 to m do
If a< min then
begin
min:=a; k:=i; {поиск минимального и "запоминание" номера строки}
end;
Writeln(‘наименьшее число ‘,min,’ находится в ‘, k , ‘ строке’);
End.

Задачи

  1. . Найти сумму и произведение всех элементов массива.
  2. Дан целочисленный двумерный массив, размерности n х m . Найти сумму и произведение четных элементов.
  3. Дан целочисленный двумерный массив, размерности n х m . Найти сумму и произведение элементов, кратных 3 и 5.
  4. Дан целочисленный двумерный массив, размерности n х m . Найти количество отрицательных элементов, больше -9.
  5. Дан целочисленный двумерный массив, размерности n х m .
  6. Дан целочисленный двумерный массив, размерности n х m
  7. Дан целочисленный двумерный массив, размерности n х m
  8. Дан целочисленный двумерный массив, размерности n х m . Найти среднее арифметическое всех элементов массива.
  9. Дан целочисленный двумерный массив, размерности n х m . Выяснить, какое число встречается в какой строке раньше - положительное или отрицательное.
  10. Дан целочисленный двумерный массив, размерности n х m . Выяснить, в какой строке последовательность является возрастающей или убывающей.
  11. Дан целочисленный двумерный массив, размерности n х m . Вывести его элементы, индексы которых являются степенями двойки (1, 2, 4, 8, 16, ...).
  12. Дан целочисленный двумерный массив, размерности n х m . Найти количество элементов кратных 7.
  13. Дан целочисленный двумерный массив, размерности n х m . Вывести на экран элементы, которые являются квадратами какого-либо числа.
  14. Дан целочисленный двумерный массив, размерности n х m . Найти номера нечетных элементов, стоящих на четных местах.
  15. Дан целочисленный двумерный массив, размерности n х m . Найти максимум и минимум. Поменять их местами.
  16. Дан целочисленный двумерный массив, размерности n х m . Заменить все элементы на их квадраты.
  17. Дан целочисленный двумерный массив, размерности n х m . Заменить все элементы на их противоположные значения.
  18. Дан целочисленный двумерный массив, размерности n х m . Поменять местами первый и последний элементы.
  19. Дан целочисленный двумерный массив, размерности n х m . Сформировать новый массив, состоящий из противоположных соответствующих элементов.
  20. Дан целочисленный двумерный массив, размерности n х m . Вывести на экран те элементы, у которых остаток от деления на m равен k.
  21. Вводятся результаты контрольной работы 10 учащихся. Определите число не удовлетворительных, удовлетворительных, хороших, отличных оценок. Вывести среднюю оценку, полученную учащимися за контрольную работу.
  22. Ввести оценки N учеников по K предметам. Определить и вывести на экран количество учеников, не получивших ни одной "5".
  23. В группе учится N студентов, студенты получили по четыре отметки за экзамен. Определить количество неуспевающих студентов и средний балл группы.
  24. Дан целочисленный двумерный массив, размерности n х m . Вычислить сумму чисел, порядковые номера которых являются числами фибоначчи.
  25. Дан целочисленный двумерный массив, размерности n х m . Сложить соответствующие элементы.

Лабораторная работа для школ и вузов по решению задач по обработке двумерных массивов на языке C (Си). Перечень задач лабораторной работы (клик по ссылке направляет на решение задачи, если таковое имеется):

Дополнительные задачи:

Работоспособность всех программ проверена в CodeBlocks 16.01 (MinGW, Windows 10). Свои решения нерешённых программ и пожелания по улучшению существующих можете давать в комментариях внизу страницы.

Скачать файл лабораторной и все исходные коды программ в архиве:


Также вы можете заказать решение своих лабораторных работ на языке C++ и многих других:

№1: Дан двумерный массив. Найти минимальную сумму элементов строки. Задачу решить без использования дополнительного одномерного массива.

#include #include #include int main() { int *arr; int x, y, i, j, sum = 0, min = 0, minstr = 0; srand(time(NULL)); x = 2 + rand() % 10; y = 2 + rand() % 6; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); for (i = 0; i

№2: Определить координаты элемента, наиболее близкого к среднему значению всех элементов массива.

#include #include #include #include int main() { int *arr; int x, y, i, j, minx = 0, miny = 0; float ssum = 0; srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); for (i = 0; i

№9: Дан двумерный массив из четного числа столбцов. Столбцы левой половины массива поменять ме-стами со столбцами правой половины.

#include #include #include int main() { int *arr; int x, y, i, j, d; srand(time(NULL)); x = 1 + rand() % 10; y = 2 * (1 + rand() % 3); arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); for (i = 0; i

№14: Для каждой строки двумерного массива выяснить количество элементов, последняя цифра которых равна а.

#include #include #include int main() { int *arr; int x, y, i, j, a, count; srand(time(NULL)); printf("Enter a: "); scanf("%d", &a); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Massiv %d x %d: \n", x, y); for (i = 0; i

№21: Дан двумерный массив b. Рассматривая его как матрицу, транспонировать b.

#include #include #include int main() { int *arr, *arrT, x, y, i, j; srand(time(NULL)); x = 1 + rand() % 7; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Matrix %d x %d: \n", x, y); for (i = 0; i

№1 (Доп): Дан двумерный массив. Упорядочить его строки по неубыванию их первых элементов.

#include #include #include int main() { int *arr, x, y, i, j, k, d, max = 0; srand(time(NULL)); x = 1 + rand() % 10; y = 1 + rand() % 7; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, y); for (i = 0; i *(arr + max*y)) max = j; for (k = 0; k

№2 (Доп): Определить, является ли заданная квадратная матрица ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1.

#include #include int main() { int *arr; int x, i, j, k, sum = 0; printf("Enter the size of the square matrix: "); scanf("%d", &x); arr = (int*)malloc(x*x*sizeof(int)); printf("Enter the elements of the matrix %d x %d: \n", x, x); for (i = 0; i

№3 (Доп): Дан квадратный двумерный массив. Найти сумму элементов каждой его диагонали, параллельной побочной.

#include #include #include int main() { int *arr; int x, y, i, j, sum; srand(time(NULL)); x = 2 + rand() % 6; arr = (int*)malloc(x*y*sizeof(int)); printf("Array %d x %d: \n", x, x); for (i = 0; i

Дан двумерный массив 5х5. Организовать ввод элементов, вывод результата в виде окон. Изменить после паузы цвет окон, в которых хранятся заданные согласно условию элементы.

Варианты заданий:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11. Найти произведение элементов, которые находятся выше главной диагонали. Заменить найденным числом все нечетные элементы.

12. Найти сумму элементов, которые находятся на нечетных позициях (сумма индексов (i+j) для Х ij – нечетное число). Заменить найденным числом все отрицательные элементы.

13. Найти произведение всех элементов, которые находятся на главной диагонали. Заменить найденным числом все элементы пятой строки и второго столбца.

14. Найти среднее арифметическое элементов на главной диагонали и среднее арифметическое на побочной. Поменять местами элементы на диагоналях.

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

16. Найти сумму нечетных элементов. Заменить найденным числом все элементы, которые находятся выше побочной диагонали.

17. Найти произведение элементов i-строки и j-столбца (i, j- предварительно вводить с клавиатуры). Заменить найденным числом все элементы ниже побочной диагонали.

18. Найти произведение элементов, которые находятся на четных позициях (сумма индексов (i+j) для Х ij – нечетное число). Заменить найденным числом все элементы на главной диагонали.

19. Найти среднее арифметическое нечетных элементов. Заменить найденным числом все элементы побочной диагонали.

20. Найти сумму всех четных элементов, которые находятся выше побочной диагонали. Заменить найденным числом все элементы четвертой строки.

21. Найти произведение элементов, которые находятся выше главной диагонали. Заменить найденным числом все нечетные элементы.

22. Найти сумму элементов, которые находятся на нечетных позициях (сумма индексов (i+j) для Х ij – нечетное число). Заменить найденным числом все отрицательные элементы.

23. Найти произведение всех элементов, которые находятся на главной диагонали. Заменить найденным числом все элементы пятой строки и второго столбца.

24. Найти среднее арифметическое элементов на главной диагонали и среднее арифметическое на побочной. Поменять местами элементы на диагоналях.

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

Например: Найти среднее арифметическое элементов на главной диагонали

После паузы:

Контрольные вопросы

1. Что такое текстовый режим, и чем он отличается от обычного?

2. Что такое окно?

3. Как переместить курсор в заданные координаты окна?

4. Как изменить цвет шрифта/фона?

Введение

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

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

При написании конспекта лекций использовалась следующая литература: для раздела 1.1 – ; для раздела 1.2 – ; для раздела 1.3 – ; для раздела 2.1 – ; для раздела 2.2 – ; для разделов 3.1, 3.2 – .

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

Тип урока: комбинированный.

Методы обучения: лекция, самостоятельная работа.

Формы организации: фронтальная работа, индивидуальная работа.

Оборудование: задания для работы в классе (индивидуальные карточки, задание на компьютере), записи на доске.

Ход урока:

1. Организационный момент.

Приветствие.
Сообщается тема.
Ставиться цель урока и задачи.

2. Актуализация полученных знаний

Устно проговариваются основные моменты предыдущей темы: “Одномерные массивы”. Фронтальный мини опрос по основным определениям.

3. Целеполагание, постановка задач:

  • дать определение понятию двумерный массив;
  • рассмотреть форму записи двумерного массива
  • рассмотреть основные свойства квадратных матриц;
  • рассмотреть действия, которые можно выполнить над матрицами;
  • познакомиться с типовыми алгоритмами обработки матриц на языке Pascal;
  • создать условия для формирования умения решать алгоритмы с двумерными массивами;
  • 4. Лекция

    Определение.

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

    Формат записи

    <имя>: array [н_индекс_1..в_индекс_1, н_индекс_2 ..в_индекс_2] of <тип>

    A: array of integer;

    Для того чтобы использовать элемент массива, надо указать имя массива и индекс элемента. Первый индекс соответствует номеру строки, второй – номеру столбца. Например:

    for i:=1 to n do
    for j:=1 to n do
    a:= random (100);

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

    const a:mas= ((2,3,1,0),
    (1,9,1,3),
    (3,5,7,0));

    Аналогом массивов языка Паскаль в математике являются матрицы. Матрица, у которой число строк равно числу столбцов, называется квадратной. A(n,n) – квадратная матрица

    Основные свойства квадратных матриц:

    1. Квадратные матрицы имеют главную и побочные диагонали. Например, для матрицы А на главной диагонали лежат элементы 1,5 и 9, а на побочной – 3, 5 и 7.

    i=j – элементы расположены на главной диагонали;
    i> j – элементы расположены ниже главной диагонали;
    i i?j – элементы расположены на главной диагонали и ниже;
    i+j= n+1– элементы расположены на побочной диагонали;
    i+j< n+1– элементы расположены над побочной диагональю;
    i+j> n+1– элементы расположены под побочной диагональю;

    2. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется диагональной матрицей

    3. Диагональная матрица, у которой все элементы, стоящие на главной диагонали, равны 1 , называется единичной матрицей

    4. Если в матрице A (m,n) поменять местами строки и столбцы, то получится матрица A t (m,n), которая называется транспонированной матрицей.

    Основные действия, которые можно выполнять над матрицами

    • суммировать;
    • находить разность;
    • произведение матрицы на некоторое число;
    • произведение двух матриц.

    Типовые алгоритмы обработки матриц на языке Паскаль

    1. Вывод матрицы в виде таблицы:
    2. for i:= 1 to n do
      begin
      for j:= 1 to m do
      write (a:4);
      writeln
      end;

    3. Использование генератора случайных чисел:
    4. randomize;
      for i:=1 to m do
      begin
      for j:=1 to n do
      begin
      a:=random(100)-10;
      write(a:4);
      end;
      writeln;
      end;

    5. 2-ой способ вывода матрицы в виде таблицы:
    6. for i:= 1 to n do
      for j:= 1 to m do
      if j>m then write (a:4)
      else writeln (a:4);

    7. Суммирование матриц:
    8. for i:= 1 to n do
      begin
      for j:= 1 to m do
      c:=a+ b
      end;

    9. Транспонирование матрицы – зеркальное отражение ее элементов относительно главной диагонали. Сделать это можно, введя новый массив:

    for i:= 1 to n do
    for j:= 1 to n do
    b= a;

    5. Первичный контроль

    “Контурная карта” 2 варианта

    1 вариант

    1. Исправьте неточности в описании двумерного массива:
    2. Var
      A= array of integer;

      … … двумерных массивов каждая строка заключается в дополнительную пару круглых скобок:

      const a:mas= ((2,3,1,0),
      (1,9,1,3),
      (3,5,7,0));

    3. Вставьте пропущенные определения:
    4. Основные действия, которые можно выполнять над матрицами: суммирование, произведение двух матриц,….,….

    5. Вставьте пропущенные определения:
    6. Матрица, у которой число строк равно числу столбцов, называется …. ….. .

    7. Найдите ошибки в алгоритме:

    for i:= 1 to n do
    begin
    for j:= 1 to m do
    c:=a+ a
    end;

    2 вариант

    1. Исправьте неточности в описании массива:

    const
    n=4; m=3;
    type
    mas:array of integer;

    1. Вставьте пропущенные определения:
    2. …… называется совокупность данных, каждое значение которых зависит от двух чисел, которые можно рассматривать как индекс столбца в матрице.

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

    5. Вставьте пропущенные определения:
    6. Квадратная матрица, у которой все элементы, исключая элементы главной диагонали, равны нулю, называется … … .

    7. Найдите ошибки в алгоритме:

    randomize;
    for i:=1 to m do
    begin
    for j:=1 to n do
    begin
    a:=random(100)-10;
    end;
    end;

    Какую типовую задачу выполняет алгоритм?

    Алгоритмы на языке Паскаль

    1. Написать программу, которая для целочисленной матрицы 3х4 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке. Приложение 2
    2. program sred_n;
      const m=3;
      n= 4;
      var

      i,j,n_pos_el:integer;
      sred:real;
      begin
      for i:=1 to m do
      for j:=1 to n do read(a);
      sred:=0;
      for i:=1 to m do begin
      n_pos_el:=0;
      for j:=1 to n do begin
      sred:=sred+a;
      if a>0 then inc(n_pos_el);
      end;
      writeln("V",i,"-oi stroke",n_pos_el,"polozitelnix elementov");
      end;
      sred:=sred/m/n;
      writeln("Srednee arifmeticheskoe:",sred:6:2);
      end.

    3. Написать программу, которая для прямоугольной целочисленной матрицы 3х4 определяет номер самого левого столбца, содержащего только положительные элементы. Если такого столбца нет, выводится сообщение. Приложение 3

    program num_posit;
    const m=3;
    n=4;
    var
    a: array of integer;
    i,j,num:integer;
    all_posit:boolean;
    begin
    randomize;
    for i:=1 to m do
    begin
    for j:=1 to n do
    begin
    a:=random(100)-10;
    write(a:4);
    end;
    writeln;
    end;
    num:=0;
    for j:=1 to n do begin
    all_posit:=true;
    for i:=1 to m do
    if a < 0 then
    begin
    all_posit:=false;
    break; end;
    if all_posit then begin
    num:=j; break; end;
    end;
    if num = 0 then
    writeln("Takix stolbcov net")
    else
    writeln("Nomer stolbca:",num);
    end.

    Ученики загружают файлы в Паскале, анализируют данный алгоритмы, просматривают результаты выполнения программ, отвечают на дополнительные вопросы:

    1. Как организуется двумерный массив?
    2. Что означает процедура inc?
    3. Что означает процедура break?
    4. Как используется генератор случайных чисел?

    6. Формирование навыков решения задач.

    Решение задач по индивидуальным карточкам самостоятельно, в алгоритмической среде.

    Примеры задач:

    1. Дана матрица А 5х5 , содержащая случайные элементы. Найти сумму всех элементов матрицы.
    2. Вывести на экран таблицу Пифагора.
    3. Найти сумму положительных элементов указанного столбца матрицы А 5х5 целых чисел.

    7. Итоги урока, постановка домашнего задания.

    Подведение итогов. Оценка уровня усвоения.

    Д/З конспект, задачи:

    Для всех:

    1. Дан двумерный квадратный массив. Найти номера строк, все элементы которых равны нулю.
    2. Дан двумерный квадратный массив. Найти номера строк, элементы в каждой из которых одинаковы между собой.
    3. Определить минимальный элемент двумерного массива. Напечатать номер строки, содержащей максимальное число минимальных элементов, если такие имеются.
    4. Дан двумерный массив. Найдите строку с наибольшей суммой элементов и наименьшей. Вывести на экран найденные строки и суммы их элементов.

    Для учащихся, имеющих представление о двумерных массивах и способах их решения:

    Вместо лекции – решение задач повышенной сложности.

    Примеры задач:

    1. Дан двумерный массив. Преобразовать его по следующему правилу: строку с номером N сделать столбцом с номером N, а столбец – строкой.
    2. В двумерном массиве Х все числа различны. В каждой строке выбирается минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива Х, в которой расположено выбранное число.
    3. Дан двумерный массив. Найти наибольшее из значений элементов первой и последней строки.
    4. Написать программу, которая выводит по строкам с клавиатуры двумерный массив и вычисляет сумму его элементов по столбцам.
    5. Написать программу, которая вычисляет сумму диагональных элементов квадратной матрицы.

    Задачи по двумерным массивам

    1) Дан двумерный массив целых чисел. Составить программу:

    а) вывода на экран элемента, расположенного в правом верхнем углу массива;

    б) вывода на экран элемента, расположенного в левом нижнем углу массива;

    в) вывода на экран любого элемента второй строки массива;

    г) вывода на экран любого элемента третьего столбца массива;

    д) вывода на экран любого элемента массива.

    2) Дан двухмерный целочисленный массив. Поменять местами:

    а) элементы, расположенные в верхнем правом и нижнем левом углах;

    б) элементы, расположенные в нижнем правом и верхнем левом углах;

    3) Известен номер строки, на которой расположен элемент главной диагонали двумерного массива целых чисел. Вывести на экран значение этого элемента.

    4) Вывести на экран (в одну строку) :

    а) все элементы главной диагонали массива

    б) все элементы главной диагонали массива, начиная с элемента, расположенного в правом нижнем углу.

    5) Заменить значения всех элементов главной диагонали целочисленного массива на нулевые.

    6) Заменить значения всех элементов побочной диагонали целочисленного массива на значения, равные 100.

    7) Определить:

    а) сумму элементов главной диагонали массива;

    б) сумму элементов побочной диагонали массива;

    в) среднее арифметическое элементов главной диагонали массива;

    г) среднее арифметическое элементов побочной диагонали массива;

    д) минимальный (максимальный) элемент главной диагонали массива;

    е) максимальный (минимальный) элемент побочной диагонали вещественного массива;

    ж) координаты первого максимального элемента главной диагонали;

    з) координаты первого минимального элемента главной диагонали.

    а) вывести на экран все элементы пятой строки массива;

    б) вывести на экран все элементы третьей строки массива, начиная с последнего элемента этой строки;

    в) вывести на экран все элементы s-го столбца массива;

    г) заменить значения всех элементов второй строки массива на число 5;

    д) заменить значения всех элементов пятого столбца на число 10.

    е) определить максимальный (минимальный) элемент третьего столбца;

    9) Дан двухмерный массив целых чисел. Составить программу:

    а) расчета произведения двух любых элементов любой строки массива

    б) сумму всех элементов любой строки массива;

    10) Дан двумерный массив целых чисел. Определить:

    а) а) в каком столбце массива сумма элементов меньше, в первом или в последнем;

    б) б) в какой строке произведение элементов больше, во второй или в третьей.

    11) Дан двухмерный целочисленный массив размером 10 х 10. Вывести на экран часть массива:

    а) расположенную выше главной диагонали;



    б) расположенную ниже главной диагонали;

    в) расположенную выше побочной диагонали;

    г) расположенную ниже побочной диагонали;

    12) Дан двумерный массив целых чисел:

    а) в каждом его столбце найти максимальный (минимальный) элемент;

    б) координаты максимального (минимального) элемента;

    в) сумму нечетных элементов в каждом столбце (строке);

    г) количество элементов кратных А или В.

    д) найти строку с максимальной суммой элементов;

    е) найти столбец с минимальной суммой элементов.