• образовательные: способствовать формированию представления о двумерном массиве и основных свойств квадратных матриц; рассмотреть действия, которые можно выполнить над матрицами; познакомить с типовыми алгоритмами обработки матриц на языке 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. Написать программу, которая вычисляет сумму диагональных элементов квадратной матрицы.

    Пример 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++. Эти задачи достаточно интересные. И большая часть из них мне понравилась.

    Задача №1

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

    Sample Input: 3 4 0 3 2 4 2 3 5 5 5 1 2 3 Sample Output: 1 2

    #include using namespace std; int main() { int n, m; cin >> n >> m; int a; // чтение for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } int max = a, max_i = 0, max_j = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] > max) { max = a[i][j]; max_i = i; max_j = j; } } } cout << max_i << " " << max_j; return 0; }

    Задача №2

    Дано нечетное число n, не превосходящее 15. Создайте двумерный массив из n×n элементов, заполнив его символами "." (каждый элемент массива является строкой из одного символа). Затем заполните символами "*" среднюю строку массива, средний столбец массива, главную диагональ и побочную диагональ. В результате "*" в массиве должны образовывать изображение звездочки. Выведите полученный массив на экран, разделяя элементы массива пробелами.

    Sample Input: 5 Sample Output: * . * . * . * * * . * * * * * . * * * . * . * . *

    #include using namespace std; int main() { int n; cin >> < n; i++) { for (int j = 0; j < n; j++) { if (i == j || i == n - 1 - j || i == n / 2 || j == n / 2) a[i][j] = 1; else a[i][j] = 0; } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] == 0) cout << "." << " "; else cout << "*" << " "; } cout << endl; } return 0; }

    Задача №3

    Дано число n, не превышающее 100. Создайте массив размером n×n и заполните его по следующему правилу. На главной диагонали должны быть записаны числа 0. На двух диагоналях, прилегающих к главной, числа 1. На следующих двух диагоналях числа 2, и т.д.

    Sample Input: 5 Sample Output: 0 1 2 3 4 1 0 1 2 3 2 1 0 1 2 3 2 1 0 1 4 3 2 1 0

    #include #include using namespace std; int main() { int n; cin >> n; int a; // обработка for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = (int) abs(i - j); } } for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

    Задача №4

    Дан двумерный массив и два числа: i и j. Поменяйте в массиве столбцы с номерами i и j.
    Формат входных данных
    Программа получает на вход размеры массива n и m, не превосходящие 100, затем элементы массива, затем числа i и j.
    Формат выходных данных
    Выведите результат.

    Sample Input: 0 1 Sample Output: 12 11 13 14 22 21 23 24 32 31 33 34

    #include #include using namespace std; int main() { int n, m, x, y, temp; cin >> n >> < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } cin >> x >> y; // обработка for (int i = 0; i < n; i++) { temp = a[i][x]; a[i][x] = a[i][y]; a[i][y] = temp; } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }

    Задача №5

    Дано число n, не превосходящее 10, и массив размером n × n. Проверьте, является ли этот массив симметричным относительно главной диагонали. Выведите слово “YES”, если массив симметричный, и слово “NO” в противном случае.

    Sample Input: 3 0 1 2 1 2 3 2 3 4 Sample Output: YES

    #include #include using namespace std; int main() { int n; bool symmetric; cin >> n; int a; // заполнение for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } // обработка symmetric = true; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (a[i][j] != a[j][i]) symmetric = false; } } // вывод if (symmetric) cout << "YES"; else cout << "NO"; return 0; }

    Задача №6

    Дан квадратный двумерный массив размером n × n и число k. Выведите элементы k-й по счету диагонали ниже главной диагонали (т.е. если k = 1, то нужно вывести элементы первой диагонали, лежащей ниже главной, если k = 2, то второй диагонали и т.д.).
    Значение k может быть отрицательным, например, если k = −1, то нужно вывести значение первой диагонали лежащей выше главной. Если k = 0, то нужно вывести элементы главной диагонали.
    Программа получает на вход число n, не превосходящие 10, затем массив размером n × n, затем число k.

    Sample Input 1: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 1 Sample Output 1: 5 1 6 Sample Input 2: 4 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 -2 Sample Output 2: 3 8

    #include using namespace std; int main() { int n, k; cin >> n; int a[n][n]; // заполнение for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } cin >> k; // обработка и вывод for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i - j - k == 0) cout << a[i][j] << " "; } } return 0; }

    Задача №7

    Дан двумерный массив размером n×m (n и m не превосходят 1000). Симметричный ему относительно главной диагонали массив называется транспонированным к данному. Он имеет размеры m×n: строки исходного массива становятся столбцами транспонированного, столбцы исходного массива становятся строками транспонированного.
    Для данного массива постройте транспонированный массив и выведите его на экран.

    Sample Input: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Sample Output: 11 21 31 12 22 32 13 23 33 14 24 34

    #include using namespace std; int main() { int n, m, x, y, temp; cin >> n >> < n; i++) { for (int j = 0; j < m; j++) { cin >> < n; i++) { for (int j = 0; j < m; j++) { b[j][i] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

    Задача №8

    В кинотеатре n рядов по m мест в каждом (n и m не превосходят 20). В двумерном массиве хранится информация о проданных билетах, число 1 означает, что билет на данное место уже продан, число 0 означает, что место свободно. Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.
    Формат входных данных
    Программа получает на вход числа n и m. Далее идет n строк, содержащих m чисел (0 или 1), разделенных пробелами. Затем дано число k.
    Формат выходных данных
    Программа должна вывести номер ряда, в котором есть k подряд идущих свободных мест. Если таких рядов несколько, то выведите номер наименьшего подходящего ряда. Если подходящего ряда нет, выведите число 0.

    Sample Input: 3 4 0 1 0 1 1 0 0 1 1 1 1 1 2 Sample Output: 2

    #include using namespace std; int main() { int n, m, k, r = 0; cin >> n >> m; int a[n][m]; // заполнение for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } cin >> k; // обработка for (int i = 0; i < n; i++) { int near_free = 0; for (int j = 0; j < m; j++) { if (a[i][j] == 0) { near_free++; if (near_free == k) { r = i + 1; break; } } else near_free = 0; } if (near_free == k) break; } // вывод cout << r; return 0; }

    Задача №9

    Дан прямоугольный массив размером n×m. Поверните его на 90 градусов по часовой стрелке, записав результат в новый массив размером m×n.
    Формат входных данных
    Вводятся два числа n и m, не превосходящие 100, затем массив размером n×m.
    Формат выходных данных
    Выведите получившийся массив. Числа при выводе разделяйте одним пробелом.

    Sample Input: 3 4 11 12 13 14 21 22 23 24 31 32 33 34 Sample Output: 31 21 11 32 22 12 33 23 13 34 24 14

    #include using namespace std; int main() { int n, m; cin >> n >> m; int a[n][m]; int b[m][n]; // заполнение for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } // обработка for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { b[j] = a[i][j]; } } // вывод for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { cout << b[i][j] << " "; } cout << endl; } return 0; }

    Задача №10

    По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m “змейкой”, как показано в примере.
    Формат входных данных
    Вводятся два числа n и m, каждое из которых не превышает 20.
    Формат выходных данных

    Sample Input: 3 5 Sample Output: 1 2 3 4 5 10 9 8 7 6 11 12 13 14 15

    #include using namespace std; int main() { int n, m, c = 0; cin >> n >> m; int a[n][m]; // обработка for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { c++; if (i%2 == 0) a[i][j] = c; else a[i] = c; } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

    Задача №11

    По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m “диагоналями”, как показано в примере.
    Формат входных данных

    Формат выходных данных
    Выведите полученный массив, отводя на вывод каждого элемента ровно 4 символа.

    Sample Input: 3 5 Sample Output: 1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

    #include using namespace std; int main() { int n, m, pos = 0, row = 0; cin >> n >> m; int a[n][m]; // обработка int start_row = 0; int number = 1; for (int min_row = 0; min_row < n; min_row++) { if (min_row > 0) start_row = pos - 1; else start_row = 0; for (pos = start_row; pos < m; pos++) { row = min_row; for (int col = pos; col >= 0; col--) { if (row < n) { a = number; number++; row++; } else break; } } } // вывод for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

    Задача №12

    Даны числа n и m. Заполните массив размером n × m в шахматном порядке: клетки одного цвета заполнены нулями, а другого цвета - заполнены числами натурального ряда сверху вниз, слева направо. В левом верхнем углу записано число 1.
    Формат входных данных
    Вводятся два числа n и m, не превышающие 100.
    Формат выходных данных
    Выведите полученный массив, отводя на вывод каждого элемента ровно 4 символа.

    Sample Input: 3 5 Sample Output: 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8

    #include using namespace std; int main() { int n, m, sm; cin >> n >> m; int a[n][m]; // обработка int number = 1; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { a[i][j] = 0; } } for (int i = 0; i < n; i++) { if (i % 2 == 1) sm = 1; else sm = 0; for (int j = sm; j < m; j++) { a[i][j] = number; number++; j++; } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

    Задача №13

    По данным числам n и m заполните двумерный массив размером n×m числами от 1 до n×m по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере.
    Формат входных данных
    Вводятся два числа n и m, не превышающие 100.
    Формат выходных данных
    Выведите полученный массив, отводя на вывод каждого элемента ровно 4 символа.

    Sample Input: 4 5 Sample Output: 1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8

    #include using namespace std; int main() { int n, m; cin >> n >> m; int a; for (int i = 0; i <= n + 1; i++) { for (int j = 0; j <= m + 1; j++) { a[i][j] = -1; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { a[i][j] = 0; } } int num = 0, row = 1, col = 0; while (num < n * m) { while (a == 0) { col++; num++; a = num; } while (a == 0) { row++; num++; a = num; } while (a == 0) { col--; num++; a = num; } while (a == 0) { row--; num++; a = num; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { if (a[i][j] % 10 == a[i][j]) cout << " "; else if (a[i][j] % 100 == a[i][j]) cout << " "; else if (a[i][j] % 1000 == a[i][j]) cout << " "; cout << a[i][j]; } cout << endl; } return 0; }

    0 0

    Please enable JavaScript to view the

    Дан двумерный массив 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 – .