примеры решения задач по двумерным массивам
Пример 1
Дана целочисленная матрица размера N×M. Размер матрицы и элементы вводятся пользователем. Поменять местами строки матрицы, содержащие максимальный и минимальный элементы матрицы. Если максимум и минимум находятся в одной строке, то строку обнулить. Полученную матрицу вывести на экран.
#include <stdio.h>
int main(int argc, char *argv[])
{
int N,M;
printf("Введите размеры матрицы: "); scanf("%d %d",&N,&M);
if((N<2)||(M<2)) {
printf("Размеры введены некорректно!\n");
return 0;
}
printf("Введите матрицу:\n");
int matrix[N][M];
for(int i=0;i<N;i++) for(int j=0;j<M;j++) scanf("%d",&matrix[i][j]);
int max = matrix[0][0], min = matrix[0][0];
int imax = 0, imin = 0;
for(int i=0;i<N;i++) for(int j=0;j<M;j++){
if(max < matrix[i][j]) {max = matrix[i][j]; imax = i;}
if(min > matrix[i][j]) {min = matrix[i][j]; imin = i;}
}
if(imin != imax){
for(int j=0;j<M;j++){
int tmp = matrix[imin][j];
matrix[imin][j] = matrix[imax][j];
matrix[imax][j] = tmp;
}
}else{
for(int j=0;j<M;j++) matrix[imin][j] = 0;
}
printf("Результат:\n");
for(int i=0;i<N;i++){
for(int j=0;j<M;j++) printf("%4d ",matrix[i][j]);
printf("\n");
}
return 0;
}
Пример 2
Дана вещественная матрица
размера N на M. Продублировать столбец
матрицы с минимальной суммой
элементов. Значения N, M и элементы
матрицы вводит пользователь.
#include <stdio.h>
int main(int argc, char *argv[])
{
int N,M;
printf("Inter N & M: "); scanf("%d %d",&N,&M);
double matrix[N][M+1];
printf("Input matrix:\n");
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
scanf("%lf",&matrix[i][j]);
double min = 0.0;
int pos = 0;
for(int j=0;j<M;j++){
double sum = matrix[0][j];
for(int i=1;i<N;i++) sum += matrix[i][j];
if((j==0)||(sum < min)) {min = sum; pos = j;}
}
for(int j=M;j>pos;j--)
for(int i=0;i<N;i++)
matrix[i][j] = matrix[i][j-1];
M++;
printf("Result matrix:\n");
for(int i=0;i<N;i++){
for(int j=0;j<M;j++)
printf("%6.2lf ",matrix[i][j]);
printf("\n");
}
return 0;
}