Создан заказ №3192792
22 сентября 2018
Написать программный код на C По заданной квадратной матрице построить вектор
Как заказчик описал требования к работе:
Нужно написать программный код на C:
"По заданной квадратной матрице построить вектор, элементы которого минимумы строк матрицы и минимумы главной диагонали."
Оформление в следующем виде должно быть представлено:
1.Метод решения
2. Программный код
3.Блок схема
Уточнение: нужно ввести генератор случа
йных чисел, рандомно заполняющих матрицу, и объявить переменную, означающую число элементов в строке (столбце), которое можно было бы ввести уже при работе программы для вывода матрицы.
подробнее
Фрагмент выполненной работы:
Написать программный код на C:
По заданной квадратной матрице построить вектор, элементы которого минимумы строк матрицы и минимумы главной диагонали.
Оформление в следующем виде должно быть представлено:
1. Метод решения
2. Программный код
3. Блок схема
Уточнение: нужно ввести генератор случайных чисел, рандомно заполняющих матрицу, и объявить переменную, означающую число элементов в строке (столбце), которое можно было бы ввести уже при работе программы для вывода матрицы.
Решение:
Метод решения задачи.
Для решения данной задачи используются динамические массивы. (работа была выполнена специалистами Автор 24) Для выделения памяти используется команда malloc. В начале объявляются указатели на начало матрицы и вектора. Пользователь вводит количество строк (столбцов) в переменную N (матрица квадратная). Всего нужно выделить памяти под N*N элементов (N строк по N элементов).
mass = (int*)malloc(n*n * sizeof(int));
Выделяется так же память для вектора. В векторе будет всего N+1 элемент, так как в него попадают минимумы из N строк и минимум из диагонали.
vector = (int*)malloc((n+1) * sizeof(int));
Доступ к элементам матрицы осуществляется как сдвиг относительно начала массива. То есть, если обход массива осуществляется в двойном цикле по строкам и столбцам, то индекс текущего элемента определяется как индекс строки, умноженный на количество элементов в строке, плюс индекс элемента в строке:
*(mass + i * n + j),
где i – индекс по строкам, j – индекс по столбцам (изменяются от 0 до N).
Сначала матрица заполняется случайными числами с помощью команды rand(). Сразу же выводим элементы массива в матричном виде.
Далее необходимо найти минимумы в каждой строке матрицы. Для этого, начиная прохождение по каждой строке, будем брать за минимум сначала первый элемент строки. Циклом, начиная со второго элемента строки, будем сравнивать все элементы с текущим минимальным. Если очередной элемент окажется меньше, то будем помещать его в переменную для минимального. В итоге, после прохождения по строке, в переменной min будет находиться минимальный элемент строки. Его и следует поместить в вектор.
Для поиска минимума на диагонали, возьмем сначала за минимальный первый элемент матрицы. На диагонали находятся элементы, которые имеют индекс *(mass + i*n+i). Аналогично сравниваем все элементы диагонали с текущим минимальным элементов и в конце заносим в вектор под индексом n найденный минимальный элемент диагонали:
*(vector + n) = min
В конце выводится сформированный вектор в строчку.
Блок – схема программы
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL, Russian); //Функция для корректного отображения кириллицы в консоли
srand(time(NULL)); //Для генерации всегда разных случайных чисел
int *mass, *vector; //Созджаем указатели на начало двумерного массива и вектора
int n; //Переменная для количества строк (столбцов) в двумерном массиве
printf(Введите количество строк (столбцов): );
scanf(%d, &n); //Вводим количество строк (столбцов) с клавиатуры
// Выделение памяти
mass = (int*)malloc(n*n * sizeof(int)); //Выделяем память для двумерного массива. Всего выделяется памяти на N*N элементов
vector = (int*)malloc((n+1) * sizeof(int)); //Выделение памяти для вектора. В нем будет n+1 элемент, так как берем минимумы из N строк и плюс минимум из диагонали матрицы
printf(Ваш сгенерированный массив:\n);
//Доступ к элементам двумерного массива будет осуществлен с помощью сдвига от начала массива...Посмотреть предложения по расчету стоимости
Заказчик
заплатил
заплатил
200 ₽
Заказчик не использовал рассрочку
Гарантия сервиса
Автор24
Автор24
20 дней
Заказчик принял работу без использования гарантии
23 сентября 2018
Заказ завершен, заказчик получил финальный файл с работой
5
Написать программный код на C
По заданной квадратной матрице построить вектор.docx
2018-09-26 19:36
Последний отзыв студента о бирже Автор24
Общая оценка
5
Положительно
Автор сдел все просто восхитительно, придраться вообще не к чему! Спасибо огромное!