Найти максимальный и минимальный элемент в каждом столбце матрицы и заменить их нулями - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно найти макс и мин элемент в каждом столбце в двумерном массиве и заменить их нулями. Программа не правильно работает для отриц. значений(для полож. все верно), подскажите где допущена ошибка.
#include "stdio.h"
#include "conio.h"
#include "locale.h"
int main()
{
    setlocale(LC_ALL,"rus");
    int a[100][100],N,maxi,maxj,max,min,mini,minj;
    printf("Введите кол-во строк (кол-во столбцов) >");
    scanf("%d,",&N);
    printf("Введите элементы массива >");
    for (int i=0;i<N;i++)
    {
        for (int j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    }
    for (int j=0;j<N;j++)
    {
        min =a[0][j];
        mini=0;
        minj=j;
        for (int i=0;i<N;i++)
        {
            if (a[i][j]<min)
            {
                min=a[i][j];
                mini=i;
                minj=j;
            }
        }
        a[mini][minj]=0;
    }
    for (int j=0;j<N;j++)
    {
        max =a[0][j];
        maxi=0;
        maxj=j;
        for (int i=0;i<N;i++)
        {
            if (a[i][j]>max)
            {
                max=a[i][j];
                maxi=i;
                maxj=j;
            }
        }
        a[maxi][maxj]=0;
    }
    printf("\n");
    for (int i=0;i<N;i++)
    {
        for(int j=0;j<N;j++)
            printf("%d ",a[i][j]);
            printf("\n");
    }
    getch();
 
}

Решение задачи: «Найти максимальный и минимальный элемент в каждом столбце матрицы и заменить их нулями»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <limits.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
 
int main(void)
{
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    int Arr[10][10];
    int min, max, imin, imax,n,m;
 
    printf("Введите кол-во строк в матрцие : ");
    scanf("%d", &n);
    printf("Введите кол-во столбцов в матрцие : ");
    scanf("%d", &m);
    system("cls");
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            Arr[i][j] =-5 + rand() % 10;
            printf("%3d", Arr[i][j]);
        }
        printf("\n");
    }
    
    for (int j = 0; j < m; j++)
    {
        min = INT_MAX; max = INT_MIN;
        for (int i = 0; i < n; i++)
        {
            if (Arr[i][j] > max) 
            {
                max = Arr[i][j];
                imax = i;
            }
            if (Arr[i][j] < min)
            {
                min = Arr[i][j];
                imin = i;
            }
        }
        Arr[imin][j] = NULL;
        Arr[imax][j] = NULL;
    }
 
    printf("\n\n");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            printf("%3d", Arr[i][j]);
        printf("\n");
    }
 
    getch();
    return 0;
}

Объяснение кода листинга программы

Вот список действий, которые выполняются в коде:

  1. Задаются вопросы пользователю для ввода количества строк и столбцов матрицы.
  2. Создается матрица случайных целых чисел.
  3. Находится минимальный и максимальный элемент в каждом столбце матрицы.
  4. Идентификаторы минимального и максимального элемента заменяются нулями.
  5. Выводится матрица с обновленными значениями.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5
Похожие ответы