Как поменять первый элемент столбца с макс. элементом а 2-ой с минимальным?
Дана матрица С размером МхN. Нужно поменять первый элемент каждого столбца матрицы С с максимальным элементом этого столбца, второй элемент этого столбца с минимальным элементом этого столбца. Вывести заданную и новообразованную матрицу. Помогите дополнить код Почему-то не выводится все минимумы и максимумы. Вот мой код:
#include<time.h>
#include<stdlib.h>
#include <stdio.h>
int main()
{
srand ( time(NULL) );
int Row, Col;
printf("Input Rows = ");
scanf("%i", &Row);
printf("Input Columns = ");
scanf("%i", &Col);
int array[Row][Col], minColumn, maxColumn;
printf("\n-------------Generated Array---------------\n");
for (int i=0; i<Row; i++){
for(int j=0; j<Col; j++){
array[i][j]=rand()%100;
printf("%i\t", array[i][j]);
}
printf("\n");
}
printf("\n-------------New Array---------------\n");
for(int i=0; i<Col; i++){
minColumn=array[0][i];
maxColumn=array[0][i];
int minindex = 0;
int maxindex = 0;
for (int j=1; j<Row; j++){
if(maxColumn<array[j][i]){
maxColumn=array[j][i];
maxindex = j;
}
if(minColumn>array[j][i]){
minColumn=array[j][i];
minindex = j;
}
}
int t;
t = array[0][i];
array[0][i] = array[maxindex][i];
array[maxindex][i] = t;
if (minindex == 0) minindex = maxindex;
t = array[1][i];
array[1][i] = array[minindex][i];
array[minindex][i] = t;
}
for (int i=0; i<Row; i++){
for(int j=0; j<Col; j++){
printf("%i\t", array[i][j]);
}
printf("\n");
}
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Вижу, инициализацию минимума и максимума из цикла вынесли, но у вас с индексами осталась путаница. Первый индекс - это строка, второй - столбец. И для обмена понадобится не значение, а индекс элемента в столбце
for(int i=0; i<Col; i++){
minColumn=array[0][i];
maxColumn=array[0][i];
minindex = 0;
maxindex = 0;
for (int j=1; j<Row; j++){
if(maxColumn<array[j][i]){
maxColumn=array[j][i];
maxindex = j;
}
if(minColumn>array[j][i]){
minColumn=array[j][i];
minindex = j;
}
}
//printf("\nmaxColumn = %i\tminColumn = %i\n", maxColumn,minColumn);
int t;
t = array[0][i];
array[0][i] = array[maxindex][i];
array[maxindex][i] = t;
if (minindex == 0) minindex = maxindex;
t = array[1][i];
array[1][i] = array[minindex][i];
array[minindex][i] = t;
}