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

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

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

Нужно найти макс и мин элемент в каждом столбце в двумерном массиве и заменить их нулями. Программа не правильно работает для отриц. значений(для полож. все верно), подскажите где допущена ошибка.
Листинг программы
  1. #include "stdio.h"
  2. #include "conio.h"
  3. #include "locale.h"
  4. int main()
  5. {
  6. setlocale(LC_ALL,"rus");
  7. int a[100][100],N,maxi,maxj,max,min,mini,minj;
  8. printf("Введите кол-во строк (кол-во столбцов) >");
  9. scanf("%d,",&N);
  10. printf("Введите элементы массива >");
  11. for (int i=0;i<N;i++)
  12. {
  13. for (int j=0;j<N;j++)
  14. scanf("%d",&a[i][j]);
  15. }
  16. for (int j=0;j<N;j++)
  17. {
  18. min =a[0][j];
  19. mini=0;
  20. minj=j;
  21. for (int i=0;i<N;i++)
  22. {
  23. if (a[i][j]<min)
  24. {
  25. min=a[i][j];
  26. mini=i;
  27. minj=j;
  28. }
  29. }
  30. a[mini][minj]=0;
  31. }
  32. for (int j=0;j<N;j++)
  33. {
  34. max =a[0][j];
  35. maxi=0;
  36. maxj=j;
  37. for (int i=0;i<N;i++)
  38. {
  39. if (a[i][j]>max)
  40. {
  41. max=a[i][j];
  42. maxi=i;
  43. maxj=j;
  44. }
  45. }
  46. a[maxi][maxj]=0;
  47. }
  48. printf("\n");
  49. for (int i=0;i<N;i++)
  50. {
  51. for(int j=0;j<N;j++)
  52. printf("%d ",a[i][j]);
  53. printf("\n");
  54. }
  55. getch();
  56. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <limits.h>
  4. #include <stdlib.h>
  5. #include <locale.h>
  6. #include <time.h>
  7.  
  8. int main(void)
  9. {
  10.     srand(time(NULL));
  11.     setlocale(LC_ALL,"Russian");
  12.     int Arr[10][10];
  13.     int min, max, imin, imax,n,m;
  14.  
  15.     printf("Введите кол-во строк в матрцие : ");
  16.     scanf("%d", &n);
  17.     printf("Введите кол-во столбцов в матрцие : ");
  18.     scanf("%d", &m);
  19.     system("cls");
  20.  
  21.     for (int i = 0; i < n; i++)
  22.     {
  23.         for (int j = 0; j < m; j++)
  24.         {
  25.             Arr[i][j] =-5 + rand() % 10;
  26.             printf("%3d", Arr[i][j]);
  27.         }
  28.         printf("\n");
  29.     }
  30.    
  31.     for (int j = 0; j < m; j++)
  32.     {
  33.         min = INT_MAX; max = INT_MIN;
  34.         for (int i = 0; i < n; i++)
  35.         {
  36.             if (Arr[i][j] > max)
  37.             {
  38.                 max = Arr[i][j];
  39.                 imax = i;
  40.             }
  41.             if (Arr[i][j] < min)
  42.             {
  43.                 min = Arr[i][j];
  44.                 imin = i;
  45.             }
  46.         }
  47.         Arr[imin][j] = NULL;
  48.         Arr[imax][j] = NULL;
  49.     }
  50.  
  51.     printf("\n\n");
  52.     for (int i = 0; i < n; i++)
  53.     {
  54.         for (int j = 0; j < m; j++)
  55.             printf("%3d", Arr[i][j]);
  56.         printf("\n");
  57.     }
  58.  
  59.     getch();
  60.     return 0;
  61. }

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

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

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

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


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

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

6   голосов , оценка 3.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы