
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ФКСиС
Специальность ПОИТ
Индивидуальная практическая работа №1
по дисциплине «Языки программирования. Часть 2»
Вариант 5
Выполнил студент: Бордон Е.С.
группа 991051
Зачетная книжка № 99105004
Минск 2021
Задание:
5. В матрице А(6,6) путем перестановки строк и столбцов поместить
максимальный элемент на место элемента А(1,1).
Пояснения к работе программы:
Программа реализована на языке программирования Си в программной среде разработки Visual Studio 2019. Программы выполнена в консольном режиме.
По условию задания матрица представляет собой двумерный массив размером [6] [6]. Для удобства работы массив данные будут заполнятся автоматически используя функцию rand(). Чтобы при каждом новом открытии программы были разные значения используем инициализатор генератора случайных чисел с аргументом time(NULL).
#define COUNT 6 // размер матрицы по заданию
int arr[COUNT][COUNT]; // матрица заполняется рандомными числами от 1 до 99
srand(time(NULL)); // возвращает в качестве аргумента кол-во сек с 1янв1970
for (int i = 0; i < COUNT; i++)
for (int j = 0; j < COUNT; j++)
arr[i][j] = 1 + rand() % (99);
При открытии программы будет сразу ведена матрица с заполненными значениями. Процедура вывода выведена в отдельную функцию.
void print(int arr[COUNT][COUNT]) {
for (int i = 0; i < COUNT; i++) {
for (int j = 0; j < COUNT; j++) {
printf(" %2d ", arr[i][j]);
}
printf("\n");
}
}
Вначале мы определяем максимальный элемент в матрице и его индекс.
int i, j, temp;
int max = 0, maxX = 0, maxY = 0; // находим максимальный элемент и его индекс
for (i = 0; i < COUNT; i++)
for (j = 0; j < COUNT; j++)
if (arr[i][j] > max) {
max = arr[i][j];
maxX = i;
maxY = j;
}
Затем перемещаем столбец в котором находится максимальный элемент в крайнее левое положение.
for (i = 0; i < COUNT; i++) {
temp = arr[i][0];
arr[i][0] = arr[i][maxY];
arr[i][maxY] = temp;
}
После проделываем тоже самое со строкой, в которой находится максимальный элемент.
for (j = 0; j < COUNT; j++) {
temp = arr[0][j];
arr[0][j] = arr[maxX][j];
arr[maxX][j] = temp;
}
На каждом этапе выводим весь массив для демонстрации работы программы.
Все функции программы вынесены в отдельный заголовочный файл.
В ходе тестирования программы ошибок не обнаружено.
Результат работы программы:
Рис. 1 Результат работы программы.
Листинг программы: файл “functions.h”:
#pragma once
#define COUNT 6 // размер матрицы по заданию
void print(int arr[COUNT][COUNT]) {
for (int i = 0; i < COUNT; i++) {
for (int j = 0; j < COUNT; j++) {
printf(" %2d ", arr[i][j]);
}
printf("\n");
}
}
Листинг программы: файл “project.c ”:
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"
int main() {
//int count = 6;
int arr[COUNT][COUNT]; // матрица заполняется рандомными числами от 1 до 99
srand(time(NULL)); // возвращает в качестве аргумента кол-во сек с 1янв1970
for (int i = 0; i < COUNT; i++)
for (int j = 0; j < COUNT; j++)
arr[i][j] = 1 + rand() % (99);
// выводим на экран
print(arr);
int i, j, temp;
int max = 0, maxX = 0, maxY = 0; // находим максимальный элемент и его индекс
for (i = 0; i < COUNT; i++)
for (j = 0; j < COUNT; j++)
if (arr[i][j] > max) {
max = arr[i][j];
maxX = i;
maxY = j;
}
printf("\n");
printf("A max = %d [%d][%d]\n", max, (maxX + 1), (maxY + 1));
// перемещаем столбец в крайнее левое положение
for (i = 0; i < COUNT; i++) {
temp = arr[i][0];
arr[i][0] = arr[i][maxY];
arr[i][maxY] = temp;
}
printf("\n");
print(arr); // выводим на экран
printf("\n");
// перемещаем строку в крайнее правое положение
for (j = 0; j < COUNT; j++) {
temp = arr[0][j];
arr[0][j] = arr[maxX][j];
arr[maxX][j] = temp;
}
printf("\n");
print(arr);
system("pause");
return 0;
}