найти одноцифровые числа в матрице и перемножить их
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
/*Çàäàíèå 1: */
void prod(int a[5][3]){
int p;
for(int i = 0; i < 5; i++){
for(int j = 0; j < 3; j++){
if(a[i][j] < 10) p *= a[i][j];
}
}
}
int main(){
srand(time(0));
setlocale(0, "Rus");
int i, j, p;
int a[5][3];
for(i = 0; i < 5; i++){
for(j = 0; j < 3; j++){
a[i][j] = rand() % 20;
cout << a[i][j] << '\t';
if(a[i][j] < 10) p *= a[i][j];
}
cout << endl;
}
cout << "=====================================" << endl;
prod(a);
cout << "Result: " << endl;
system("pause>>void");
return 0;
}
нужно сделать всё в функции, но почему-то не выводится.
Ответы (1 шт):
Приветик, итак, во-первых, когда ищем произведение предварительно присваиваем ему значение 1 (аналогично для суммы присваиваем 0).
Во-вторых, if(a[i][j] < 10) p *= a[i][j]; в данном случае не имеет смысла писать, так как тебе нужно обработка матрицы в функции.
В-третьих,
prod(a); cout << "Result: " << endl;
у тебя функция типа void и она не возвращает никаких значений для вывода результата в главном коде, а значит нужно выводить в функции void или же сделать функцию int prod дабы она возвращала произведение и вывод результата происходил в главном теле программы.
Немного подкорректировала твой код, и вот результат:
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
void prod(int a[5][3]) {
int p = 1, con = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
if (a[i][j] < 10 and a[i][j] > -10) {
p *= a[i][j];
con++;
}
}
}
if (con == 0) cout << "There are no single digit elements.";
cout << "=====================================" << endl;
cout << "Result: " << p << endl;
}
int main() {
srand(time(0));
setlocale(0, "Rus");
int i, j, p = 1;
int a[5][3];
cout << "Matrix:\n";
for (i = 0; i < 5; i++) {
for (j = 0; j < 3; j++) {
a[i][j] = rand() % 20;
cout << a[i][j] << "\t";
}
cout << endl;
}
prod(a);
system("pause");
return 0;
}
К слову, написано в Visual Studio 2019 , если у тебя версия другая подправь библиотеки. Собственно, вывод программы таков:
Matrix:
35 31 44
7 55 0
79 7 28
67 50 59
76 19 19
=====================================
Result: 0