В заданной матрице найти количество отрицательных элементов в строках, содержащих хотя бы один нулевой элемент - C (СИ)
Формулировка задачи:
Ребята, помогите пожалуйста.
Вопрос такой: можно ли так писать программу, именно так располагая цикл по t.
Помогите оптимизировать решение задачи, работает не совсем правильно.
Условие задачи:
Дана целочисленная прямоугольная матрица.
Определить количество отрицательных элементов в тех строках,которые содержат хотя бы один нулевой элемент.
#include <stdio.h> #define n 3 #define m 4 int main () { int s,i,j,k,num,f,t,a[n][m]; for( int i = 0; i < n; i++) { for( int j = 0; j < m; j++) { scanf("%d",&a[j][i]); } } f=0; //для проверки,был ли 0 for( int i = 0,num=-1; i < n; i++) { k=0; // флаг для нулевого элемента s=0; // счётчик отрицательных значений for( int j = 0; j < m; j++) { if( a[i][j] == 0 ) { k=1; f=1; num=i; t=j; j=m; } } if(k==0) { j=t; for( int t = 0,i=num; t<m; t++) // строка,в которой нулевой элемент if( a[i][t] < 0 ) { s++; } } } if(f==0) { printf("Не было нулей\n"); } printf("s=%d",s); }
Заранее прошу не ругаться сильно за мой г@вно-код
Решение задачи: «В заданной матрице найти количество отрицательных элементов в строках, содержащих хотя бы один нулевой элемент»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <stdbool.h> #define N 5 #define M 6 int main(void) { srand(time(NULL)); int matrix[N][M]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { printf("%d\t", matrix[i][j] = rand() % 6 - 3); } putchar('\n'); } for (int i = 0; i < N; i++) { bool contains_zero = false; int count_negatives = 0; for (int j = 0; j < M; j++) { if (matrix[i][j] < 0) { count_negatives++; } contains_zero = contains_zero || matrix[i][j] == 0; } printf("%d\n", contains_zero ? count_negatives : -1); } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д