Определить, в какой строке матрицы находится больше всего нулей - 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; }
Объяснение кода листинга программы
Код решает задачу поиска строки в квадратной матрице, в которой больше всего нулей. Список функций и их описания:
- FillMatrix - заполняет матрицу псевдослучайными данными
- PrintMatrix - выводит матрицу на экран
- FindRowMaxCount - возвращает номер первой строки с наибольшим количеством нулей Основная функция main содержит следующие действия:
- Инициализация генератора случайных чисел
- Объявление и заполнение матрицы A псевдослучайными значениями от 0 до 1
- Вывод матрицы на экран
- Поиск первой строки с наибольшим количеством нулей
- Вывод результата на экран Список действий в функции FillMatrix:
- Инициализация переменных i и j
- Заполнение матрицы псевдослучайными значениями от 0 до 1 Список действий в функции PrintMatrix:
- Инициализация переменных i и j
- Вывод значений матрицы на экран построчно Список действий в функции FindRowMaxCount:
- Инициализация переменных i, j, row, currCount и maxCount
- Проход по всем строкам матрицы
- Обновление значения currCount для каждой строки
- Обновление значения maxCount, если найдено большее количество нулей
- Обновление значения row, если найдено большее количество нулей и row еще не задано
- Возврат значения row Таким образом, в коде решается задача поиска строки с наибольшим количеством нулей в квадратной матрице.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д