Дана матрица, записанная в текстовом файле file.txt. В нем первые два числа — количество строк и столбцов матрицы, далее значения элементов матрицы. Элементы матрицы — целые числа. Необходимо поменять все максимальные значения матрицы (если оно не одно) на минимальное значение элемента данной матрицы. Не буду подробно описывать решения — C++

//file.txt
//3 4
//9 2 3
//1 6 3
//1 2 3
//4 4 4
#include "stdafx.h"

//Функция которая заменит максимум на минимум
void replace(int min, int max, int**mas, int cols, int row)
{
  for (int i = 0; i < row; i++)
  {
   for (int j = 0; j < cols; j++)
   {
    if (max == mas[i][j])
     mas[i][j] = min;
    printf("%d\t", mas[i][j]);
   }
   printf("\n");
  }
}

int _tmain(int argc, _TCHAR* argv[])
{
  //Указатель на файл
  FILE* f = fopen("file.txt","r");
  int cols = 0, row = 0;
 
  //Считаем число столбов и строк
  fscanf(f, "%d", &cols);
  fscanf(f, "%d", &row);

  //Создадим матрицу
  int** mas = new int*[row];
  for (int i = 0; i < row; i++)
    mas[i] = new int[cols];

  //Считываем матрицу
  for (int i = 0; i < row; i++)
    for (int j = 0; j < cols; j++)
      fscanf(f, "%d", &mas[i][j]);
	
  //Освободим наш файл
  fclose(f);

  int min = mas[0][0], max = mas[0][0];

  //Найдем мин. и макс. элементы
  for (int i = 0; i < row; i++)
   for (int j = 0; j < cols; j++)
   {
     if (min > mas[i][j])
       min = mas[i][j];
     if (max < mas[i][j])
       max = mas[i][j];
   }
	
  //Вызовим нашу функцию
  replace(min, max, mas, cols, row);
	
  return 0;
}

Leave a Comment

+ 56 = 60