Найти сумму и произведение всех положительных элементов матрицы
Добрый вечер, вот такая вот задача мне подвернулась. Меню, рандом значения вывод на экран я думаю я смогу написать.
Помогите пожалуйста составить алогритм самой задачи, как ее решать. Заранее благодарен
Само задание
Написать программу обработки матриц согласно индивидуального задания.
Программа должна иметь текстовое меню, состоящие из подпрограмм. Предусмотреть возможность ввода матрицы с клавиатуры и генерации случайных значений и вывод результата обработки на экран.
Найти сумму и произведение всех ее положительных элементов
Найти сумму всех отрицательных, и произведение всех положительных элементов матрицы
Дана вещественная матрица размерности n*m. Найти сумму всех ее отрицательных и произведение всех ее.
Шаблоны функций: найти произведение всех отрицательных элементов и сумму всех положительных элементов до максимального
помогите с задачей условие таково. Дан одна мерный массив состоящий из целых чисел нужно найти.
Найти минимальный элемент матрицы и произведение всех ее положительных элементов
Найти минимальный элемент матрицы заданного размера ипроизведение всех ее положительных элементов.
Найти минимальный элемент матрицы заданного размера и произведение всех ее положительных элементов
Помогите решить задачу. Вот условие: Найти минимальный элемент матрицы заданного размера и.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#include #include #include int main() { const int rows = 5; const int cols = 5; int array[rows][cols]; srand(time(0)); // Инициализируем массив for (int i = 0; i rows; i++) { for (int j = 0; j cols; j++) { array[i][j] = 1 + rand() % 9; } } int sumElement = 0; // Сумма положительных элементов int compositionElement = 1; // Произведение положительных элементов for (int i = 0; i rows; i++) { for (int j = 0; j cols; j++) { if (array[i][j] > 0) sumElement += array[i][j]; compositionElement *= array[i][j]; } } cout <"Сумма положительных элементов: " ; cout <" Произведение положительных элементов: " ; }
igdev, Спасибо, но немного не пойму, там значения уже заданы типо (это 5 и 5)?. Как поменять на ручной ввод, что то не могу понять
Добавлено через 18 минут
igdev, Есть вот такой код, можете пожалуйста помочь подставить под мою задачу, тут и меню есть и вывод массива на экран
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
//mass(m,n) - массив размерностью m, n //create_mass - создание массива //output_mass - вывод массива //transposition_mass - перестановка массива #include using namespace std; int create_mass(int &m, int &n, int **&mass) { setlocale(LC_ALL, "Rus"); int d = 0; cout "Введите размерность массива.\n"; cout "Введите количество рядков массива: "; cin>>m; cout "Введите количество столбцов массива: "; cin >>n; if (m 0 && n0) { cout "\n Заданый массив не имеет размера.\n"; } else { mass = new int*[m]; for( int i=0; im;i++) { mass[i]=new int [m]; } cout "Создается массив размерностью:" m "," n endl; for (int i = 0; i m; i++) { for( int j=0; jn;j++){ cout "Введите элементы массива:" i"," j endl; cin >> mass[i][j]; }//for j }//for i } return 0; } int output_mass(int m, int n, int **mass) { cout "\t\Вывод созданого массива: \n"; if (m 0 && n0) { cout "\n\t\Массив пуст.\n"; } else { for (int i = 0; im; i++) { for( int j=0; jn;j++) { cout mass[i][j] " "; } coutendl; } } return 0; } int main() { int n=0, m=0; int j=0, i=0; int **mass; int d = 0; setlocale(LC_ALL, "Rus"); do { cout endl; cout "\n1.\t"Cоздание нового массива"\n"; cout "2.\t"Созданый массив"\n"; cout "3.\t"Найти минимальные значения"\n"; cout "4.\t"Выход"\n\n"; cout "Выберите нужный вам пункт.\n"; cin >> d; switch (d) { case 1: create_mass(m, n, mass); break; case 2: output_mass(m, n, mass); break; case 3: моя задача; break; case 4: if (mass != 0) { delete mass; } break; cout " Такой пункт не существует.\n"; } } while (d != 4);
sahafarik, да, в моем примере размер определен зарание. Акцент делался на нахождении элементов больше 0.
Добавлено через 4 минуты
sahafarik,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
// Example program #include using namespace std; void func(int m, int n, int **mass) { int sumElement = 0; // Сумма положительных элементов int compositionElement = 1; // Произведение положительных элементов for (int i = 0; i m; i++) { for (int j = 0; j n; j++) { if (mass[i][j] > 0) sumElement += mass[i][j]; compositionElement *= mass[i][j]; } } cout <"Сумма положительных элементов: "cout <" Произведение положительных элементов: " ; } int create_mass(int &m, int &n, int **&mass) { setlocale(LC_ALL, "Rus"); int d = 0; cout <"Введите размерность массива.\n"; cout <"Введите количество рядков массива: "; cin>>m; cout <"Введите количество столбцов массива: "; cin >>n; if (m 0 && n0) { cout <"\n Заданый массив не имеет размера.\n"; } else { mass = new int*[m]; for( int i=0; im;i++) { mass[i]=new int [m]; } cout <"Создается массив размерностью:" ; <"," for (int i = 0; i m; i++) { for( int j=0; jn;j++){ cout <"Введите элементы массива:" <"," ; cin >> mass[i][j]; }//for j }//for i } return 0; } int output_mass(int m, int n, int **mass) { cout <"\t\Вывод созданого массива: \n"; if (m 0 && n0) { cout <"\n\t\Массив пуст.\n"; } else { for (int i = 0; im; i++) { for( int j=0; jn;j++) { cout ; [ i][j] <" "; } cout; } } return 0; } int main() { int n=0, m=0; int j=0, i=0; int **mass; int d = 0; setlocale(LC_ALL, "Rus"); do { cout; cout <"\n1.\t"Cоздание нового массива"\n"; cout <"2.\t"Созданый массив"\n"; cout <"3.\t"Найти минимальные значения"\n"; cout <"4.\t"Выход"\n\n"; cout <"Выберите нужный вам пункт.\n"; cin >> d; switch (d) { case 1: create_mass(m, n, mass); break; case 2: output_mass(m, n, mass); break; case 3: // моя задача; func(m, n, mass) break; case 4: if (mass != 0) { delete mass; } break; cout <" Такой пункт не существует.\n"; } } while (d != 4);
igdev, Выдает вот такую ошибку, уже много раз сталкивался. Не знаете в чем может быть проблема?
Добавлено через 46 минут
igdev, Так что, не знаете в чем проблема?
sahafarik, вот, теперь все работает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
#include "stdafx.h" #include using namespace std; void func(int m, int n, int **mass) { int sumElement = 0; // Сумма положительных элементов int compositionElement = 1; // Произведение положительных элементов for (int i = 0; i m; i++) { for (int j = 0; j n; j++) { if (mass[i][j] > 0) sumElement += mass[i][j]; compositionElement *= mass[i][j]; } } cout <"Сумма положительных элементов: "cout <" Произведение положительных элементов: " ; } int create_mass(int &m, int &n, int **&mass) { setlocale(LC_ALL, "Rus"); int d = 0; cout <"Введите размерность массива.\n"; cout <"Введите количество рядков массива: "; cin >> m; cout <"Введите количество столбцов массива: "; cin >> n; if (m 0 && n 0) { cout <"\n Заданый массив не имеет размера.\n"; } else { mass = new int*[m]; for (int i = 0; im; i++) { mass[i] = new int[m]; } cout <"Создается массив размерностью:" ; <"," for (int i = 0; i m; i++) { for (int j = 0; jn; j++){ cout <"Введите элементы массива:" <"," ; cin >> mass[i][j]; }//for j }//for i } return 0; } int output_mass(int m, int n, int **mass) { cout <"\tВывод созданого массива: \n"; if (m 0 && n 0) { cout <"\n\tМассив пуст.\n"; } else { for (int i = 0; im; i++) { for (int j = 0; jn; j++) { cout ; [ i][j] <" "; } cout; } } return 0; } int main() { int n = 0, m = 0; int j = 0, i = 0; int **mass; int d = 0; mass = new int*[m]; for (int i = 0; im; i++) { mass[i] = new int[m]; } setlocale(LC_ALL, "Rus"); do { cout; cout <"\n1.\tCоздание нового массива\n"; cout <"2.\tСозданый массив\n"; cout <"3.\tНайти минимальные значения\n"; cout <"4.\tВыход\n\n"; cout <"Выберите нужный вам пункт.\n"; cin >> d; switch (d) { case 1: create_mass(m, n, mass); break; case 2: output_mass(m, n, mass); break; case 3: // моя задача; func(m, n, mass); break; case 4: if (mass != 0) { delete mass; } break; cout <" Такой пункт не существует.\n"; } } while (d != 4); return 0; }
Как найти сумму элементов матрицы,
Найти сумму элементов в каждой строке матрицы, сумму элементов в каждом столбце, max элемент из сумм
Задан двумерный массив целых чисел размерности N на M, массив либо вводится пользователем, либо.
Как найти сумму элементов определенной строки матрицы
Нужно найти сумму элементов определенной строки(к примеру 3) матрицы,не превышающих 25. Вот как.
Найти сумму элементов столбцов матрицы, которые не содержат отрицательных элементов
Помогите разобраться с первым заданием вроде как разобрался но множество ошибок с которые я не как.
Сообщение от AlinkaP
1 2 3 4 5 6 7 8 9 10 11 12
#include int main(void) { int i, j; double A[2][2]={2.5, 3.7, -4.6, 0.4}, sum=0; for (i=0; i2; i++) for (j=0; j2; j++) sum+=A[i][j]; printf("%lf\n", sum); return 0; }
мама Стифлера, Спасибо за ответ, что-то протупила я.
Добавлено через 24 минуты
мама Стифлера, И еще что значит «Вычисление суммы элементов квадратной матрицы оформить в виде подпрограммы»,? Как это должно выглядеть?
AlinkaP, скорее под словом «подпрограммы», имелась ввиду функция. Больше не знаю о чем может быть речь.
Должно быть тогда так. только у меня не корректно возвращается тип double, не пойму сам как сделать правильно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include int Sum(double M[2][2]) { int i, j; double s=0; for (i=0; i2; i++) for (j=0; j2; j++) s+=M[i][j]; return s; } int main(void) { double A[2][2]={2.5, 3.7, -4.6, 0.4}; printf("%lf\n", Sum(A)); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include int Sum(double M[2][2]) { int i, j; double s=0; for (i=0; i2; i++) for (j=0; j2; j++) s+=M[i][j]; return s; } int main(void) { double A[2][2]={2.5, 3.7, -4.6, 0.4}; double sum = Sum(A); printf("%lf\n", sum); return 0; }
Сообщение было отмечено AlinkaP как решение
Решение
Сообщение от мама Стифлера
Сообщение было отмечено AlinkaP как решение
Решение
Байт, вот блин, это же так просто, как я сам не допер. Спасибо.
Добавлено через 2 минуты
Вот он, самый правильный код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#include double Sum(double M[2][2]) { int i, j; double s=0; for (i=0; i2; i++) for (j=0; j2; j++) s+=M[i][j]; return s; } int main(void) { double A[2][2]={2.5, 3.7, -4.6, 0.4}; printf("%lf\n", Sum(A)); return 0; }
Сообщение от мама Стифлера
Опыт, батенька, опыт. Глаз наметанный. Вот сделаешь пару таких ошибочек в СЕРЬЕЗНОЙ работе, сдавать надо кровь из носу, не сдашь — деньжат не дадут, да еще пальцем будут тыкать — «экий дурак!» Тут-то глаз и наметывается.
Добавлено через 3 минуты
Сообщение от мама Стифлера
Чой-то мне не нравится такой иницилизмент. Оно может и проскочит, трансляторы шибко умные стали. Но по правилам
Байт, странно почему может не прокатить? Если только сегодня обсуждали в другой теме про «линелизирование». Как бы тоже самое получается ведь — массив в одну строку(длинный), или в две(короткий)
Сообщение от мама Стифлера
Понимаешь, я-то знаю, что это одинаково. И даже в определение языка на это есть намек. Но я-то — умный. У меня в голове хрен знает сколько миллиардов нейронов (у тебя, кстати, столько же), да и работают они иначе. А транслятор, робот то бишь, он по большому счету тупенький. Хотя и чревычайно исполнительный. И что он понимает, а что нет, где я могу положиться на его тугую соображаловку, а где с ним лучше говорить на языке, понятном ему навярняка, на эту тему мне думать лень. Потому я переменные объявляю в начале блока, массивы записываю, как положено. Некогда мне исследовать возможности его интеллекта.