Определить номер столбца матрицы, в котором находится больше всего отрицательных элементов - C (СИ)

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

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

Дан двумерный массив размерности Н*М. Определить номер столбца, в котором находится больше всего отрицательных элементов.
#include <stdio.h>
#include <conio.h>
void main (){
    int i,j,n,m,a[10][10],b[10],k,max,l;
printf ("Razmernost:\n");
scanf ("%d %d ",&n,&m);
printf ("Elements massiva \n");
for (i = 0; i <= n; i++);{
    for (j = 0; j <= m; j++);
    scanf ("%d ", &a[i][j]);}
 
 k=0;
 for (j=1; j<=m;j++){
     for (i=1; i<=n; i++){
         if (a[i][j]<0) {
             k=k+1;
         }
     }
         b[j]=k;
         k=0;
     }
 max=b[1];
 l=1;
 for (i=2; i<=m; i++){
     if (b[i]>max) {
         max = b[i];
         l=i;
     }
 }
 printf ("l \n");
 getch ();
}

Решение задачи: «Определить номер столбца матрицы, в котором находится больше всего отрицательных элементов»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
//#include <conio.h>
 
int main() {
    int i, j, n, m, a[10][10], b[10], k, max;
    printf("Razmernost: ");
    scanf("%d %d ", &n, &m);
    printf("\nElements massiva:\n");
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            //scanf("%d ", &a[i][j]);
            a[i][j] = rand() % 15 - 10;
            printf("%4d", a[i][j]);
        }
        printf("\n");
    }
    max = -1;
    for (j = 0; j < m; j++) {
        k = 0;
        for (i = 0; i < n; i++) {
            if (a[i][j] < 0) {
                k++;
            }
        }
        if (k >= max) {
            max = k;
        }
        b[j] = k;
    }
    printf("max negative elem = %d in cols: ", max);
    for (j = 0; j < m; ++j)
        if (b[j] == max)
            printf(" %d", j);
    // getch();
    return 0;
}

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

В этом коде определен размер матрицы (n на m), создана матрица a[10][10] для хранения случайных чисел, а затем введен ряд случайных чисел в эту матрицу. Затем код ищет столбец с наибольшим количеством отрицательных чисел, используя массив b[10] для подсчета количества отрицательных чисел в каждом столбце. Наконец, код выводит номер столбца с наибольшим количеством отрицательных чисел.

  1. Объявлены переменные i, j, n, m, a[10][10], b[10], k, max.
  2. С помощью функции printf и scanf вводится размер матрицы.
  3. С помощью двух вложенных циклов создается и выводится матрица a[10][10].
  4. Переменная max инициализируется как -1.
  5. Два вложенных цикла подсчитывают количество отрицательных чисел в каждом столбце и обновляют переменную max, если количество отрицательных чисел в текущем столбце больше, чем максимальное значение.
  6. Результаты подсчета количества отрицательных чисел в каждом столбце сохраняются в массиве b[10].
  7. С помощью функции printf выводится наибольшее количество отрицательных чисел и столбцы, в которых это количество достигается.
  8. Код завершается, и управление передается операционной системе.

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

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