#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// Прототипы функций
int **allocate_matrix_dynamic1(int rows, int cols);
void read_matrix_dynamic1(int **matrix, int rows, int cols);
void print_matrix_dynamic1(int **matrix, int rows, int cols);
void free_matrix_dynamic1(int **matrix, int rows);
int calculate_row_sum(int *row, int cols);
void sort_matrix_by_row_sum(int **matrix, int rows, int cols);
int main() {
int choice, rows, cols;
// Выбор метода выделения памяти
printf("Выберите метод выделения памяти:\n1. Динамически (2D массив указателей)\n2. Динамически (1D массив)\n3. Динамически (массив указателей на строки)\n"); if (scanf("%d", &choice
) != 1 || choice
< 1 || choice
> 3) { return 1; // Ошибка выбора
}
// Чтение размеров матрицы
if (scanf("%d %d", &rows
, &cols
) != 2 || rows
< 1 || cols
< 1 || rows
> MAX_SIZE
|| cols
> MAX_SIZE
) { return 1; // Ошибка при считывании размеров матрицы
}
int **matrix = NULL;
switch (choice) {
case 1:
matrix = allocate_matrix_dynamic1(rows, cols);
break;
case 2:
printf("Динамическое выделение 1D массива не поддерживается в этой версии.\\n"); return 1; // Ошибка, так как 1D не реализовано
case 3:
printf("Динамическое выделение массив указателей на строки не поддерживается в этой версии.\\n"); return 1; // Ошибка, так как указатели не реализованы
}
if (matrix == NULL) {
return 1; // Ошибка при выделении памяти
}
read_matrix_dynamic1(matrix, rows, cols);
sort_matrix_by_row_sum(matrix, rows, cols);
print_matrix_dynamic1(matrix, rows, cols);
free_matrix_dynamic1(matrix, rows);
return 0;
}
// Динамическое выделение: 2D массив указателей
int **allocate_matrix_dynamic1(int rows, int cols) {
int **matrix
= malloc(rows
* sizeof(int *)); if (matrix == NULL) return NULL;
for (int i = 0; i < rows; i++) {
matrix
[i
] = malloc(cols
* sizeof(int)); if (matrix[i] == NULL) {
for (int j = 0; j < i; j++) {
}
return NULL;
}
}
return matrix;
}
// Чтение динамической матрицы
void read_matrix_dynamic1(int **matrix, int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (scanf("%d", &matrix
[i
][j
]) != 1) { exit(1); // Ошибка при считывании }
}
}
}
// Печать динамической матрицы
void print_matrix_dynamic1(int **matrix, int rows, int cols) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (j < cols - 1) {
}
}
if (i < rows - 1) {
}
}
}
// Освобождение памяти для динамической матрицы
void free_matrix_dynamic1(int **matrix, int rows) {
for (int i = 0; i < rows; i++) {
}
}
// Функция для вычисления суммы строки
int calculate_row_sum(int *row, int cols) {
int sum = 0;
for (int j = 0; j < cols; j++) {
sum += row[j];
}
return sum;
}
// Функция для сортировки матрицы по сумме строк
void sort_matrix_by_row_sum(int **matrix, int rows, int cols) {
for (int i = 0; i < rows - 1; i++) {
for (int j = i + 1; j < rows; j++) {
if (calculate_row_sum(matrix[i], cols) > calculate_row_sum(matrix[j], cols)) {
// Обмен строк
int *temp = matrix[i];
matrix[i] = matrix[j];
matrix[j] = temp;
}
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCiNkZWZpbmUgTUFYX1NJWkUgMTAwCgovLyDQn9GA0L7RgtC+0YLQuNC/0Ysg0YTRg9C90LrRhtC40LkKaW50ICoqYWxsb2NhdGVfbWF0cml4X2R5bmFtaWMxKGludCByb3dzLCBpbnQgY29scyk7CnZvaWQgcmVhZF9tYXRyaXhfZHluYW1pYzEoaW50ICoqbWF0cml4LCBpbnQgcm93cywgaW50IGNvbHMpOwp2b2lkIHByaW50X21hdHJpeF9keW5hbWljMShpbnQgKiptYXRyaXgsIGludCByb3dzLCBpbnQgY29scyk7CnZvaWQgZnJlZV9tYXRyaXhfZHluYW1pYzEoaW50ICoqbWF0cml4LCBpbnQgcm93cyk7CmludCBjYWxjdWxhdGVfcm93X3N1bShpbnQgKnJvdywgaW50IGNvbHMpOwp2b2lkIHNvcnRfbWF0cml4X2J5X3Jvd19zdW0oaW50ICoqbWF0cml4LCBpbnQgcm93cywgaW50IGNvbHMpOwoKaW50IG1haW4oKSB7CiAgICBpbnQgY2hvaWNlLCByb3dzLCBjb2xzOwoKICAgIC8vINCS0YvQsdC+0YAg0LzQtdGC0L7QtNCwINCy0YvQtNC10LvQtdC90LjRjyDQv9Cw0LzRj9GC0LgKICAgIHByaW50Zigi0JLRi9Cx0LXRgNC40YLQtSDQvNC10YLQvtC0INCy0YvQtNC10LvQtdC90LjRjyDQv9Cw0LzRj9GC0Lg6XG4xLiDQlNC40L3QsNC80LjRh9C10YHQutC4ICgyRCDQvNCw0YHRgdC40LIg0YPQutCw0LfQsNGC0LXQu9C10LkpXG4yLiDQlNC40L3QsNC80LjRh9C10YHQutC4ICgxRCDQvNCw0YHRgdC40LIpXG4zLiDQlNC40L3QsNC80LjRh9C10YHQutC4ICjQvNCw0YHRgdC40LIg0YPQutCw0LfQsNGC0LXQu9C10Lkg0L3QsCDRgdGC0YDQvtC60LgpXG4iKTsKICAgIGlmIChzY2FuZigiJWQiLCAmY2hvaWNlKSAhPSAxIHx8IGNob2ljZSA8IDEgfHwgY2hvaWNlID4gMykgewogICAgICAgIHByaW50Zigibi9hXFxuIik7CiAgICAgICAgcmV0dXJuIDE7IC8vINCe0YjQuNCx0LrQsCDQstGL0LHQvtGA0LAKICAgIH0KCiAgICAvLyDQp9GC0LXQvdC40LUg0YDQsNC30LzQtdGA0L7QsiDQvNCw0YLRgNC40YbRiwogICAgaWYgKHNjYW5mKCIlZCAlZCIsICZyb3dzLCAmY29scykgIT0gMiB8fCByb3dzIDwgMSB8fCBjb2xzIDwgMSB8fCByb3dzID4gTUFYX1NJWkUgfHwgY29scyA+IE1BWF9TSVpFKSB7CiAgICAgICAgcHJpbnRmKCJuL2FcXG4iKTsKICAgICAgICByZXR1cm4gMTsgLy8g0J7RiNC40LHQutCwINC/0YDQuCDRgdGH0LjRgtGL0LLQsNC90LjQuCDRgNCw0LfQvNC10YDQvtCyINC80LDRgtGA0LjRhtGLCiAgICB9CgogICAgaW50ICoqbWF0cml4ID0gTlVMTDsKCiAgICBzd2l0Y2ggKGNob2ljZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgbWF0cml4ID0gYWxsb2NhdGVfbWF0cml4X2R5bmFtaWMxKHJvd3MsIGNvbHMpOwogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIHByaW50Zigi0JTQuNC90LDQvNC40YfQtdGB0LrQvtC1INCy0YvQtNC10LvQtdC90LjQtSAxRCDQvNCw0YHRgdC40LLQsCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgtGB0Y8g0LIg0Y3RgtC+0Lkg0LLQtdGA0YHQuNC4LlxcbiIpOwogICAgICAgICAgICByZXR1cm4gMTsgLy8g0J7RiNC40LHQutCwLCDRgtCw0Log0LrQsNC6IDFEINC90LUg0YDQtdCw0LvQuNC30L7QstCw0L3QvgogICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgcHJpbnRmKCLQlNC40L3QsNC80LjRh9C10YHQutC+0LUg0LLRi9C00LXQu9C10L3QuNC1INC80LDRgdGB0LjQsiDRg9C60LDQt9Cw0YLQtdC70LXQuSDQvdCwINGB0YLRgNC+0LrQuCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgtGB0Y8g0LIg0Y3RgtC+0Lkg0LLQtdGA0YHQuNC4LlxcbiIpOwogICAgICAgICAgICByZXR1cm4gMTsgLy8g0J7RiNC40LHQutCwLCDRgtCw0Log0LrQsNC6INGD0LrQsNC30LDRgtC10LvQuCDQvdC1INGA0LXQsNC70LjQt9C+0LLQsNC90YsKICAgIH0KCiAgICBpZiAobWF0cml4ID09IE5VTEwpIHsKICAgICAgICBwcmludGYoIm4vYVxcbiIpOwogICAgICAgIHJldHVybiAxOyAvLyDQntGI0LjQsdC60LAg0L/RgNC4INCy0YvQtNC10LvQtdC90LjQuCDQv9Cw0LzRj9GC0LgKICAgIH0KCiAgICByZWFkX21hdHJpeF9keW5hbWljMShtYXRyaXgsIHJvd3MsIGNvbHMpOwogICAgc29ydF9tYXRyaXhfYnlfcm93X3N1bShtYXRyaXgsIHJvd3MsIGNvbHMpOwogICAgcHJpbnRfbWF0cml4X2R5bmFtaWMxKG1hdHJpeCwgcm93cywgY29scyk7CiAgICBmcmVlX21hdHJpeF9keW5hbWljMShtYXRyaXgsIHJvd3MpOwoKICAgIHJldHVybiAwOwp9CgovLyDQlNC40L3QsNC80LjRh9C10YHQutC+0LUg0LLRi9C00LXQu9C10L3QuNC1OiAyRCDQvNCw0YHRgdC40LIg0YPQutCw0LfQsNGC0LXQu9C10LkKaW50ICoqYWxsb2NhdGVfbWF0cml4X2R5bmFtaWMxKGludCByb3dzLCBpbnQgY29scykgewogICAgaW50ICoqbWF0cml4ID0gbWFsbG9jKHJvd3MgKiBzaXplb2YoaW50ICopKTsKICAgIGlmIChtYXRyaXggPT0gTlVMTCkgcmV0dXJuIE5VTEw7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKICAgICAgICBtYXRyaXhbaV0gPSBtYWxsb2MoY29scyAqIHNpemVvZihpbnQpKTsKICAgICAgICBpZiAobWF0cml4W2ldID09IE5VTEwpIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpOyBqKyspIHsKICAgICAgICAgICAgICAgIGZyZWUobWF0cml4W2pdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmcmVlKG1hdHJpeCk7CiAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBtYXRyaXg7Cn0KCi8vINCn0YLQtdC90LjQtSDQtNC40L3QsNC80LjRh9C10YHQutC+0Lkg0LzQsNGC0YDQuNGG0YsKdm9pZCByZWFkX21hdHJpeF9keW5hbWljMShpbnQgKiptYXRyaXgsIGludCByb3dzLCBpbnQgY29scykgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewogICAgICAgICAgICBpZiAoc2NhbmYoIiVkIiwgJm1hdHJpeFtpXVtqXSkgIT0gMSkgewogICAgICAgICAgICAgICAgcHJpbnRmKCJuL2FcXG4iKTsKICAgICAgICAgICAgICAgIGV4aXQoMSk7IC8vINCe0YjQuNCx0LrQsCDQv9GA0Lgg0YHRh9C40YLRi9Cy0LDQvdC40LgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKLy8g0J/QtdGH0LDRgtGMINC00LjQvdCw0LzQuNGH0LXRgdC60L7QuSDQvNCw0YLRgNC40YbRiwp2b2lkIHByaW50X21hdHJpeF9keW5hbWljMShpbnQgKiptYXRyaXgsIGludCByb3dzLCBpbnQgY29scykgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvbHM7IGorKykgewogICAgICAgICAgICBwcmludGYoIiVkIiwgbWF0cml4W2ldW2pdKTsKICAgICAgICAgICAgaWYgKGogPCBjb2xzIC0gMSkgewogICAgICAgICAgICAgICAgcHJpbnRmKCIgIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGkgPCByb3dzIC0gMSkgewogICAgICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgfQogICAgfQp9CgovLyDQntGB0LLQvtCx0L7QttC00LXQvdC40LUg0L/QsNC80Y/RgtC4INC00LvRjyDQtNC40L3QsNC80LjRh9C10YHQutC+0Lkg0LzQsNGC0YDQuNGG0YsKdm9pZCBmcmVlX21hdHJpeF9keW5hbWljMShpbnQgKiptYXRyaXgsIGludCByb3dzKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewogICAgICAgIGZyZWUobWF0cml4W2ldKTsKICAgIH0KICAgIGZyZWUobWF0cml4KTsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0LTQu9GPINCy0YvRh9C40YHQu9C10L3QuNGPINGB0YPQvNC80Ysg0YHRgtGA0L7QutC4CmludCBjYWxjdWxhdGVfcm93X3N1bShpbnQgKnJvdywgaW50IGNvbHMpIHsKICAgIGludCBzdW0gPSAwOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKICAgICAgICBzdW0gKz0gcm93W2pdOwogICAgfQogICAgcmV0dXJuIHN1bTsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INC80LDRgtGA0LjRhtGLINC/0L4g0YHRg9C80LzQtSDRgdGC0YDQvtC6CnZvaWQgc29ydF9tYXRyaXhfYnlfcm93X3N1bShpbnQgKiptYXRyaXgsIGludCByb3dzLCBpbnQgY29scykgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzIC0gMTsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgcm93czsgaisrKSB7CiAgICAgICAgICAgIGlmIChjYWxjdWxhdGVfcm93X3N1bShtYXRyaXhbaV0sIGNvbHMpID4gY2FsY3VsYXRlX3Jvd19zdW0obWF0cml4W2pdLCBjb2xzKSkgewogICAgICAgICAgICAgICAgLy8g0J7QsdC80LXQvSDRgdGC0YDQvtC6CiAgICAgICAgICAgICAgICBpbnQgKnRlbXAgPSBtYXRyaXhbaV07CiAgICAgICAgICAgICAgICBtYXRyaXhbaV0gPSBtYXRyaXhbal07CiAgICAgICAgICAgICAgICBtYXRyaXhbal0gPSB0ZW1wOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9