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

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

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

Нужно показать двухмерный массив А[3][3], который состоит из елементов 0 и 1, и указать в какой строке находится больше всего 0. (Заранее спасибо)
Вот код
{int i, j, p, q=0, f, a[3][3]={{0,1,0},{0,0,0},{1,1,1}}; 
 
for (i=0;i<3;i++) 
 
for (j=0;j<3;j++) 
    printf("massiv: \n %d", &a[][]);
scanf("%d", &a); 

for (i=0;i<3;i++) 

{
    p=0; 
 
     for(j=0;j<3;j++) 
 
         if (f=a[i][j]==0) p=0; 
 
    if (q<p){q=p;f=i;}; 
 
    } 

printf ("%d %d", f, q); 
getch ();
}

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

textual
Листинг программы
/*
 ============================================================================
 Name        : c_array_0_1.c
 Author      : UranFlex
 Version     : 0.1 alpha
 Copyright   : Your copyright notice
 Description : Показать двухмерный массив А[3][3], который состоит из елементов 0 и 1, и указать в какой строке находится больше всего 0.
               Если таких строк несколько - взять первую из них. Нумерация строк в матрице с начинается нуля.
               C, Ansi-style.
 ============================================================================
 */
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
 
#define SZ 3 // размер матрицы
//функция заполняет квадратную матрицу псевдослучайными данными
void FillMatrix( int* matrix, const int size, const unsigned randRange, const int shift );
//функция выводит на экран квадратную матрицу
void PrintMatrix( int* const matrix, const int size );
// функция возвращает номер первой из строк, в которой больше всего нулей,
// или -1 если строки хотя бы с одним нулем не найдено в матрице
int FindRowMaxCount( int* const matrix, const int size );
 
int main( void ) {
 
    srand( time( 0 ) ); // засеять генератор случайных чисел
 
    int A[ SZ ][ SZ ]; // объявляем нашу матрицу
 
    FillMatrix( *A, SZ, 2, 0 ); // заполняем матрицу псевдослучайными значениями типа int от 0 до 1 включительно
 
    // выводим матрицу на экран
    puts( "Исходная матрица" );
    PrintMatrix( *A, SZ );
 
    // ищем первую строку с наибольшим количествм нулей
    int row = FindRowMaxCount( *A, SZ );
 
    // если нет строк содержащих нули
    if ( row == -1 )
        puts( "Нет строк содержащих нули" );
    else // а если все же есть такие
        printf( "Первая строка с наибольшим количествм нулей %d\n", row );
 
    return EXIT_SUCCESS;
}
 
void FillMatrix( int* matrix, const int size, const unsigned randRange, const int shift ) {
    size_t i, j;
    for ( i = 0; i < size; ++i )
        for ( j = 0; j < size; ++j )
            matrix[ i * size + j ] = shift + rand() % randRange;
}
 
void PrintMatrix( int* const matrix, const int size ) {
    size_t i, j;
    for ( i = 0; i < size; ++i ) {
 
        for ( j = 0; j < size; ++j )
            printf( "%d  ", matrix[ i * size + j ] );
 
        puts( "" );
    }
}
 
int FindRowMaxCount( int* const matrix, const int size ) {
 
    int i, j, row = -1, currCount = 0, maxCount = 0;
 
    for ( i = 0; i < size; ++i ) {
        currCount = 0;
        for ( j = 0; j < size; ++j )
            if ( matrix[ i * size + j ] == 0 )
                ++currCount;
        if ( currCount > maxCount ) {
            maxCount = currCount;
            row = i;
        }
    }
 
    return row;
}

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

Код решает задачу поиска строки в квадратной матрице, в которой больше всего нулей. Список функций и их описания:

  1. FillMatrix - заполняет матрицу псевдослучайными данными
  2. PrintMatrix - выводит матрицу на экран
  3. FindRowMaxCount - возвращает номер первой строки с наибольшим количеством нулей Основная функция main содержит следующие действия:
  4. Инициализация генератора случайных чисел
  5. Объявление и заполнение матрицы A псевдослучайными значениями от 0 до 1
  6. Вывод матрицы на экран
  7. Поиск первой строки с наибольшим количеством нулей
  8. Вывод результата на экран Список действий в функции FillMatrix:
  9. Инициализация переменных i и j
  10. Заполнение матрицы псевдослучайными значениями от 0 до 1 Список действий в функции PrintMatrix:
  11. Инициализация переменных i и j
  12. Вывод значений матрицы на экран построчно Список действий в функции FindRowMaxCount:
  13. Инициализация переменных i, j, row, currCount и maxCount
  14. Проход по всем строкам матрицы
  15. Обновление значения currCount для каждой строки
  16. Обновление значения maxCount, если найдено большее количество нулей
  17. Обновление значения row, если найдено большее количество нулей и row еще не задано
  18. Возврат значения row Таким образом, в коде решается задача поиска строки с наибольшим количеством нулей в квадратной матрице.

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


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

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

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