Главная » Учебные материалы » Информатика » Решения задач » МГТУ им. Н.Э.Баумана » Несколько классов/семестров » Работы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлы
Для студентов МГТУ им. Н.Э.Баумана по предмету ИнформатикаРаботы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлыРаботы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлы
2024-01-25СтудИзба

Работы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлы

Описание

Работы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлы
Программа на Си

Ввод данных матриц:

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

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

Элементы каждой матрицы объединяются в одномерный массив.
Этот массив сортируется в порядке возрастания.
Отсортированные значения возвращаются в матрицу в змеевидном порядке: по строкам слева направо, затем в обратном порядке.
Вывод результатов в файлы:

Результаты для каждой матрицы выводятся в отдельный текстовый файл (output1.txt и output2.txt).
В каждом файле сначала указываются размеры матрицы, а затем значения элементов.
Освобождение выделенной памяти:

Выделенная динамическая память для обеих матриц освобождается.
Завершение программы:

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








Показать/скрыть дополнительное описание

Работы с двумя матрицами - Ввод двух матриц, змеевидная сортировка. сохранение результатов в файлы Программа на Си Ввод данных матриц: Пользователю предлагается ввести количество строк и столбцов для двух матриц. Выделение памяти и ввод значений матриц: Для каждой матрицы выделяется динамическая память. Пользователь вводит значения для каждого элемента матрицы. Сортировка матриц змейкой: Элементы каждой матрицы объединяются в одномерный массив. Этот массив сортируется в порядке возрастания. Отсортированные значения возвращаются в матрицу в змеевидном порядке: по строкам слева направо, затем в обратном порядке. Вывод результатов в файлы: Результаты для каждой матрицы выводятся в отдельный текстовый файл (output1.txt и output2.txt).

В каждом файле сначала указываются размеры матрицы, а затем значения элементов. Освобождение выделенной памяти: Выделенная динамическая память для обеих матриц освобождается. Завершение программы: Файлы закрываются, и программа завершается с кодом возврата 0. Таким образом, программа принимает две матрицы от пользователя, сортирует их значения, записывает результат в файлы и освобождает выделенную память.  1.scan_matrix: Функция запрашивает у пользователя размеры матрицы (количество строк и столбцов), выделяет динамическую память под матрицу и заполняет её значениями, введенными с клавиатуры. 2.compare: Функция сравнения, используемая для сортировки чисел в массиве.

3.snake_sort: Функция, которая сначала создает одномерный массив из элементов матрицы, затем сортирует его с использованием стандартной функции qsort и, наконец, переставляет отсортированные элементы обратно в матрицу в змеевидном порядке (зигзагообразно). 4.print_file: Функция записи матрицы в файл. Открывает файл, записывает размеры матрицы и элементы матрицы в текстовый файл. 5.free_matrix: Функция освобождения динамически выделенной памяти для матрицы. 6.main: В функции main программа сначала считывает две матрицы с помощью функции scan_matrix. Затем она сортирует обе матрицы с использованием функции snake_sort. После этого результаты записываются в два различных файла (output1.txt и output2.txt) с использованием функции print_file.

Наконец, программа освобождает выделенную память и закрывает файлы. Программа работает с матрицами, сортирует их и записывает отсортированные матрицы в файлы.        Код: #include <stdio.h> #include <stdlib.h> // n, m - указатели на размеры матрицы // возвращается указатель на данные матрицы int **scan_matrix(int *n, int *m) { // вводим количество строк printf(\"Enter n (kol-vo strok): \"); scanf(\"%d\", n); // вводим количество столбцов printf(\"Enter m (kol-vo stolbtsov): \"); scanf(\"%d\", m); // выделяем память под список из n указателей на строки матрицы int **arr = calloc(*n, sizeof(int *)); // выделяем память под каждую строку for (int i = 0; i < *n; ++i) { arr = calloc(*m, sizeof(int)); } // вводим матрицу for (int i = 0; i < *n; ++i) { for (int j = 0; j < *m; ++j) { // i - номер строки // j - номер столбца // вводим arr[j] printf(\"Enter arr[%d][%d]: \", i, j); scanf(\"%d\", &arr[j]); } } return arr; } // функция, сравнивающая два int int compare(const void *a, const void *b) { // возвращает отрицательное число, если a идет перед b return * (int *)a - * (int *)b; } // сортировка змейкой // arr - матрица // n - количество строк // m - количество столбцов void snake_sort(int **arr, int n, int m) { // создаем массив b[n * m] int *b = calloc(n * m, sizeof(int)); // выписываем туда все числа из матрицы for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { b[i * m + j] = arr[j]; } } // сортируем b по возрастанию qsort(b, n * m, sizeof(int), compare); // проходимся змейкой по массиву, выписываем туда b[k++] int k = 0; for (int j = 0; j < m; ++j) { for (int i = 0; i < n; ++i) { if (j % 2 == 0) { // при нечетном столбце в обратном порядке arr[j] = b[k++]; } else { arr[n - i - 1][j] = b[k++]; } } } free(b); } // выводим матрицу в файл void print_file(FILE *fout, int **arr, int n, int m) { fprintf(fout, \"%d %d\\n\", n, m); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { fprintf(fout, \"%d \", arr[j]); } fprintf(fout, \"\\n\"); } } // освобождение ресурсов матрицы void free_matrix(int **arr, int n, int m) { for (int i = 0; i < n; ++i) { free(arr); } free(arr); } int main() { // считываем первую матрицу arr1[n1][m1] printf(\"Enter first matrix\\n\"); int n1, m1; int **arr1 = scan_matrix(&n1, &m1); // считываем вторую матрицу arr2[n2][m2] printf(\"Enter second matrix\\n\"); int n2, m2; int **arr2 = scan_matrix(&n2, &m2); // сортируем матрицы snake_sort(arr1, n1, m1); snake_sort(arr2, n2, m2); // открываем два файла FILE *fout1 = fopen(\"output1.txt\", \"w\"); FILE *fout2 = fopen(\"output2.txt\", \"w\"); // выводим матрицы в файл print_file(fout1, arr1, n1, m1); print_file(fout2, arr2, n2, m2); // освобождаем память free_matrix(arr1, n1, m1); free_matrix(arr2, n2, m2); // закрываем файлы fclose(fout1); fclose(fout2); return 0; }.

Характеристики решённой задачи

Учебное заведение
Программы
Просмотров
2
Покупок
0
Качество
Идеальное компьютерное
Размер
17,55 Kb

Список файлов

    Картинка-подпись
    Ваше экономие времени является моей ГЛАВНОЙ задачей! Если я Вам хоть чуть-чуть помог, пожалуйста, сделайте и мне приятное, оставьте 5 ЗВЁЗД и позитивный комментарий. Большое спасибо!

    Комментарии

    Поделитесь ссылкой:
    Цена: 149 руб.
    Расширенная гарантия +3 недели гарантии, +10% цены
    Рейтинг-
    0
    0
    0
    0
    0
    Поделитесь ссылкой:
    Сопутствующие материалы
    Свежие статьи
    Популярно сейчас
    Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
    Ответы на популярные вопросы
    Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
    Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
    Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
    Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
    Отзывы студентов
    Ставлю 10/10
    Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
    Лучшая платформа для успешной сдачи сессии
    Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
    Студизба ван лав ❤
    Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
    Отличный сайт
    Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
    Маленький отзыв о большом помощнике!
    Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
    Студ. Изба как крупнейший сборник работ для студентов
    Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
    Спасательный островок
    Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
    Всё и так отлично
    Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
    Отзыв о системе "Студизба"
    Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
    Отличный помощник
    Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
    Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
    Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
    Спасибо за шикарный сайт
    Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
    Популярные преподаватели
    Добавляйте материалы
    и зарабатывайте!
    Продажи идут автоматически
    5137
    Авторов
    на СтудИзбе
    440
    Средний доход
    с одного платного файла
    Обучение Подробнее