Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С (для ИВТ) / Готовые лабы С / Лаба4 / Laba 4 (3
.2).c#include <stdio.h>
#include <stdlib.h>
int main() {
int **A;
int rows, cols;
int i, j;
int min_val, max_val;
int min_i, min_j, max_i, max_j;
int min_count = 0, max_count = 0;
printf("Enter number of rows: ");
scanf("%d", &rows);
printf("Enter number of columns: ");
scanf("%d", &cols);
// Динамическое выделение памяти
A = (int**)malloc(rows * sizeof(int*));
for (i = 0; i < rows; i++) {
A[i] = (int*)malloc(cols * sizeof(int));
}
printf("Enter matrix %dx%d:\n", rows, cols);
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("A[%d][%d] = ", i, j);
scanf("%d", &A[i][j]);
}
}
// Поиск min и max через указатели
min_val = max_val = A[0][0];
min_i = min_j = max_i = max_j = 0;
for (i = 0; i < rows; i++) {
int *row = A[i]; // указатель на текущую строку
for (j = 0; j < cols; j++) {
if (*(row + j) < min_val) {
min_val = *(row + j);
min_i = i; min_j = j;
min_count = 1;
} else if (*(row + j) == min_val) {
min_count++;
}
if (*(row + j) > max_val) {
max_val = *(row + j);
max_i = i; max_j = j;
max_count = 1;
} else if (*(row + j) == max_val) {
max_count++;
}
}
}
if (min_count > 1 || max_count > 1) {
printf("Error: min or max value appears more than once\n");
// Освобождение памяти
for (i = 0; i < rows; i++) {
free(A[i]);
}
free(A);
return 1;
}
// Обмен через указатели
int *min_ptr = &A[min_i][min_j];
int *max_ptr = &A[max_i][max_j];
int temp = *min_ptr;
*min_ptr = *max_ptr;
*max_ptr = temp;
printf("\nMatrix after swapping min and max:\n");
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%4d", A[i][j]);
}
printf("\n");
}
// Освобождение памяти
for (i = 0; i < rows; i++) {
free(A[i]);
}
free(A);
return 0;
}
Соседние файлы в папке Лаба4
