Массив: Найти количеств строк матрицы, содержащих хотя бы один ноль. - C (СИ)
Формулировка задачи:
В общем, взываю к помощи экспертов. Дана прямоугольная матрица, с заданным количеством столбцов и строк.
1. Найти количеств строк, содержащих хотя бы один ноль.
2. Найти номер столбца, в котором содержится самая длинная серия одинаковых элементов.
В интернете куча различных вариаций решения, но они все в C++, а нужно конкретно в Си.
Заранее благодарен любому, кто откликнется на зов о помощи.
Решение задачи: «Массив: Найти количеств строк матрицы, содержащих хотя бы один ноль.»
textual
Листинг программы
//Дана прямоугольная матрица, с заданным количеством столбцов и строк.
const int w=5,h=5;
int a[w][h]={0};
int i,j,c=0,r,k,l;
for(i=0;i<w;i++){ r=0;
for(j=0;j<h;j++){
a[i][j]=rand()%10;
printf("%5d",a[i][j]);
//Найти количеств строк, содержащих хотя бы один ноль.
r+=a[i][j]==0;
};printf("\n"); c+=r!=0;
};printf("\n");
printf("количеств строк, содержащих хотя бы один ноль.%d",c);
//Найти номер столбца, в котором содержится самая длинная серия одинаковых элементов.
c=0; r=0; l=0;
for(i=0;i<h;i++){
for(j=0;j<w;j++){
r=0; for(k=j+1;j<w && a[j][i]==a[k][i];k++,r++);
if(r>c) {c=r;l=i;};
}
}
printf("номер столбца %d",l);
getchar();
Объяснение кода листинга программы
- Объявлены переменные:
- w и h - количество строк и столбцов матрицы соответственно;
- a - массив, представляющий собой матрицу;
- i, j, c, r, k, l - вспомогательные переменные для работы с матрицей и поиска нулей;
- Вывод начала матрицы.
- В цикле перебираются строки матрицы:
- В каждой строке в цикле перебираются столбцы;
- Элементы матрицы заполняются случайными числами от 0 до 9;
- Выводится текущий элемент матрицы;
- Счетчик r подсчитывает количество нулей в текущей строке;
- После завершения внутренней циклы, счетчик r выводит количество строк с нулями и увеличивает счетчик c, если в строке есть ноль.
- После завершения внешнего цикла, выводится общее количество строк с нулями.
- В цикле перебираются столбцы матрицы:
- В каждой строке в цикле перебираются столбцы;
- Счетчик r подсчитывает количество одинаковых элементов в текущем столбце;
- Если текущий столбец содержит более длинную серию одинаковых элементов, чем предыдущий, обновляются счетчики r, c и l;
- После завершения внутренней циклы, выводится номер столбца с самой длинной серией одинаковых элементов.
- Программа ожидает ввода пользователя для подтверждения работы программы.