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