Найти строку и столбец матрицы, которые удовлетворяют требованиям - C (СИ)
Формулировка задачи:
При решении задачи столкнулся с проблемой, вот условие задачи: Задана прямоугольная таблица А[1:N, 1:N], элементы которой равны 0 или 1, причем А[i, i] = 0 для любого i. Необходимо найти, если они есть, такие строку i0 и столбец j0, чтобы в столбце j0 были все 0, а в строке i0 – все 1 (кроме элемента A[i0, i0], равного 0).
Собственно говоря не могу реализовать поиск строк и столбцов.
вот что есть на данный моментзаранее спасибо
#include <conio.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 5 int main() { clrscr(); int arr[N][N]; int i,j; srand(time(NULL)); //zapolnenie masiva for (i = 0; i < N; i++) { for (j = 0; j < N;j++ ) { arr[i][j]=rand()%2; } } //diagonal zapolniaem 0 for (i=0;i<N;i++){ for (j=0;j<N;j++){ if (i==j) arr[i][j]=0;} } //vivod masiva for ( i = 0; i < N; i++){ for ( j = 0; j < N;j++ ){ printf ("%d ", arr[i][j]); } printf ("\n"); } getch(); return 0; }
Решение задачи: «Найти строку и столбец матрицы, которые удовлетворяют требованиям»
textual
Листинг программы
#include <conio.h> #include <stdlib.h> #include <stdio.h> #include <time.h> #define N 4 int main() { //clrscr(); int arr[N][N]; int i,j; srand(time(NULL)); //zapolnenie masiva for (i = 0; i < N; i++) { for (j = 0; j < N;j++ ) { arr[i][j]=rand()%2; } } //diagonal zapolniaem 0 for (i=0;i<N;i++){ // for (j=0;j<N;j++){ /*if (i==j)*/ arr[i][i]=0;} //vivod masiva for ( i = 0; i < N; i++){ for ( j = 0; j < N;j++ ){ printf ("%d ", arr[i][j]); } printf ("\n"); } printf ("\n"); int sum_row = 0; for ( i = 0; i < N; i++){ for ( j = 0; j < N;j++ ){ if(i!=j)sum_row += arr[i][j]; } if(sum_row==N-1) printf ( "Yes row\n"); sum_row=0; } int sum_col = 0; for ( i = 0; i < N; i++){ for ( j = 0; j < N;j++ ){ if(i!=j)sum_col += arr[j][i]; } if(sum_col==0) printf ( "Yes col \n"); sum_col=0; } getch(); //return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается матрица
arr
размеромN x N
, гдеN
- константа, равная 4. - С помощью цикла
for
заполняется матрица случайными числами от 0 до 1 с помощью функцииrand()
. - С помощью еще одного цикла
for
по диагонали матрицы устанавливаются значения равные 0. - С помощью двух вложенных циклов
for
выводится на экран содержимое матрицы. - С помощью двух вложенных циклов
for
суммируются элементы каждой строки и каждого столбца. Если сумма равнаN-1
, то выводится сообщениеYes row
илиYes col
. - В конце программы вызывается функция
getch()
, которая ожидает нажатия клавиши. Код также содержит комментарии, которые описывают некоторые действия, выполняемые в коде.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д