Самый правый положительный элемент строки матрицы - C (СИ)
Формулировка задачи:
Подскажите пожалуйста как найти самый правый положительный элемент каждой строки матрицы?
Решение задачи: «Самый правый положительный элемент строки матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 5
#define N 7
int main()
{
int i, j, right, flag, A[M][N];
srand(time(0));
for(i = 0; i < M; ++i){
right = 0;
flag = 0;
for(j = 0; j < N; ++j){
A[i][j] = rand() % 200 - 100;
printf("%4d", A[i][j]);
if(A[i][j] > 0)
flag = 1;
if(A[i][j] > 0 && j > right)
right = j;
}
if(!flag)
puts(" This line have not positive elements.");
else
printf(" The rightmost positive line item A[%d][%d] = %d\n", i, right, A[i][right]);
}
return 0;
}
Объяснение кода листинга программы
В этом коде ищется самый правый положительный элемент в каждой строке матрицы 5x7, при этом:
- Переменная
iиспользуется для прохода по строкам матрицы (итерируется от 0 до 4). - Переменная
jиспользуется для прохода по столбцам матрицы (итерируется от 0 до 6). - Переменная
rightиспользуется для хранения индекса самого правого положительного элемента в строке. - Переменная
flagиспользуется для проверки наличия положительных элементов в строке (итерируется от 0 до 6). - Переменная
A[i][j]используется для хранения значения элемента матрицы, инициализируется случайным числом от -100 до 100. - Выводится значение
A[i][j]с помощью функцииprintf, при этом выводимое значение округляется до 4 цифр с помощью спецификатора формата%4d. - Если
A[i][j]больше 0, тоflagустанавливается в 1. - Если
A[i][j]больше 0 иjбольшеright, тоrightустанавливается равнымj. - После завершения прохода по всем столбцам, если
flagравен 0, то выводится сообщениеThis line have not positive elements.с помощью функцииputs. - Если
flagне равен 0, то выводится сообщениеThe rightmost positive line item A[%d][%d] = %d\nс помощью функцииprintf, при этомi,rightиA[i][right]подставляются в соответствующие места в сообщении. - В конце программы возвращается 0, что означает успешное выполнение программы.