03 Practise

Практика 3

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

Примеры

/**
 * Эта программа заполнит двумерный массив числами от 0 до 8. И будет выведено на экран:
 * 0 1 2                                                     
 * 3 4 5
 * 6 7 8
 */

#include<stdio.h>

int main(void) {
  short matrix[3][3];
  int el = 0;
  for (unsigned int i = 0; i < 3;i++) {
    for (unsigned int j = 0; j < 3; j++) {
      matrix[i][j] = el;
      el++;
    }
  }

  for (unsigned int i = 0; i < 3;i++) {
    printf("\n");
    for (unsigned int j = 0; j < 3; j++) {
      printf("%d ", matrix[i][j]);
    }
  }
}

Задания

Задание 1. Расстояние между словами.

Расстояние между двумя словами равной длины - это количество позиций, в которых различаются эти слова. В заданном предложении найти пару наиболее далеко удаленных слов заданной длины. Предложение задайте сразу как массив слов: char* sentence[] = {"hello", "world"};.

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

Задание 2. Перестановки.

Подсчитать количество строк заданной целочисленной матрицы NxN, являющихся перестановкой чисел 1,2...N (т. е. содержащих каждое из чисел 1,2...N ровно один раз.

Подсказки:
- строка - это строка в матрице из чисел, а не текст - сначала напишите функцию, которая определяет, является ли строка перестановкой - число N задайте с помощью #define

Задание 3. Строки матрицы.

Среди тех строк целочисленной матрицы, которые содержат только нечетные элементы, найти строку с максимальной суммой модулей элементов.

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

Задание 4. Произведение матриц.

Написать программу, которая матрично умножает две матрицы. Одна матрица размера 2x3, а вторая 3x2.

Подсказки:
- используйте транспонирование!

Задание 5. Максимум диагонали.

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

Подсказки: - напишите функцию для подсчета суммы элементов на диагонали

Задание 6. Спирали.

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

Домашнее задание.

Читать главу 4 K&R.