Помогите с решением задачи по с++
Дан массив действительных чисел B (M, N). Сформировать вектор Y (N), в который записать произведение положительных элементов соответствующих столбцов матрицы.
int main()
{
const int M = 3;
const int N = 3;
int B[M][N];
int Y[N];
int m = 1;
//int i;
//int j;
for (int i(0); i < M; i++)
{
for (int j(0); j < N; j++)
{
cout << "B[" << i << "]" << "[" << j << "] = ";
cin >> B[i][j];
if (B[i][j] > 0)
//B[i][j] = B[i+1][j];
m *= B[i][j];
Y[i] = m;
}
m = 1;
}
cout << "New array" << endl;
for (int i(0); i < M; i++)
{
cout << "Y[" << i << "] = " << Y[i] << endl;
}
}
Получается найти по строке, а по столбцу не знаю как
Ответы (1 шт):
Автор решения: ilya_kas
→ Ссылка
Надо разбить на 2 группы циклов. В первой - ввод, во второй - считаешь. Во второй идёшь снаружи по j, а внутри по i. Так за рассмотрение 1 столбца, будет проходить все строки.
int main(){
const int M = 3;
const int N = 3;
int B[M][N];
int Y[N];
for (int i = 0; i < M; i++)
for (int j = 0; j < N; j++){
cout << "B[" << i << "]" << "[" << j << "] = ";
cin >> B[i][j];
}
int m = 1;
for (int j = 0; j < N; j++){
for (int i = 0; i < M; i++){
if (B[i][j] > 0)
m *= B[i][j];
Y[j] = m;
}
m = 1;
}
cout << "New array" << endl;
for (int i = 0; i < N; i++){
cout << "Y[" << i << "] = " << Y[i] << endl;
}
}