Сформировать вектор: значения первых отрицательных элементов в каждом столбце исходной матрицы - C (СИ)
Формулировка задачи:
Дана вещественная матрица размера M x N. Сформировать вектор b, в котором элементы вычисляются как значения первых отрицательных элементов в каждом столбце исходной матрицы.
Решение задачи: «Сформировать вектор: значения первых отрицательных элементов в каждом столбце исходной матрицы»
textual
Листинг программы
include <stdio.h>
#include <stdlib.h>
int main( )
{
int k=0, n=0, i, j, a[3][5], b[5]; //если есть условие что в каждом столбце есть отрицательное число то размер b <= 5
for(i = 0; i < 3; i++ )
for(j = 0; j < 5; j++)
{
printf("\n a[%d][%d]=", i+1, j+1);
scanf("%d", &a[i][j]);
}
j=0;
for (i = 0; i < 3; i++)
{
if (a[i][j]<0)
{
b[k]=a[i][j];
k++;
i=0;
j++;
}
}
for (i = 0; i<5; i++ )
printf ("\n b[%d]=%d\n ", i+1, b[i]);
//так получится если у Вас в каждом столбце матрицы есть хотя бы отрицательное значение то так сработает
//в противном случае у Вас в массиве в выводе будут какахи
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены переменные:
k- счетчик отрицательных чисел в столбцах;n- счетчик чисел в столбцах;iиj- индексы для обхода матрицы;a[3][5]- исходная матрица 3х5;b[5]- вектор для хранения первых отрицательных чисел в каждом столбце.
- Заполняется исходная матрица
aс помощью циклаfor. - Затем, с помощью вложенного цикла
for, проверяется каждый элемент матрицыa. Если элемент отрицательный, то его значение добавляется в векторbи счетчикkувеличивается. После этого, счетчикиiиjсбрасываются для перехода к следующему столбцу. - В конце программы, с помощью цикла
for, выводятся значения вектораb. - Вернется 0, если в матрице есть хотя бы одно отрицательное число в каждом столбце, иначе программа выдаст некорректное сообщение.