Консультация № 191056
22.05.2017, 14:39
0.00 руб.
22.05.2017, 18:25
1 5 1
Уважаемые эксперты! Пожалуйста, помогите решить две задачи:
Дана прямоугольная матрица размером MхN.
Для каждой четной строки подсчитайте сумму ее элементов, а
для каждой нечетной строки – произведение ее элементов.
Результаты запишите в одномерный массив. Одномерный массив
отсортируйте по возрастанию методом пузырька (Bubble Sort).
Выведите на экран исходную матрицу и отсортированный
одномерный массив

Прикрепленные файлы:
73ace2e7d22506f72b463dc5e1e92d9172818120.jpg

Обсуждение

давно
Мастер-Эксперт
17387
18345
22.05.2017, 16:56
общий
Адресаты:
Я думаю, что сформулированная Вами задача никакого отношения к исследованию операций не имеет. На каком алгоритмическом языке должна быть написана программа?
Об авторе:
Facta loquuntur.
давно
Посетитель
401155
4
22.05.2017, 18:22
общий
Адресаты:
Здравствуйте. С++.
давно
Мастер-Эксперт
17387
18345
22.05.2017, 18:26
общий
Обратите, пожалуйста, внимание на данную консультацию, перенесённую из другого раздела.
Об авторе:
Facta loquuntur.
давно
Студент
400828
51
26.05.2017, 23:58
общий
это ответ
Здравствуйте, Iv!
Задача № 1:
Код:
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

int main()
{
const int m = 5; const int n = 7;
int a[m][n]; int s[m];
int i, j, x, temp;

srand(time(NULL)); //Инициализация генератора случайных чисел
for(i=0;i<m;i++){
for (j = 0;j < n;j++) {
a[i][j] = rand() % 9 + 1; // Случайное целое число от 1 до 9
cout << a[i][j]<<' ';
}
cout << endl;
}

for (i = 0;i < m;i++) { //Перебираем все строки
if (i % 2 == 0) { // Если строка имеет чётный номер, то
x = 0; //считаем сумму её элементов,
for (j = 0;j < n;j++)
x += a[i][j];
}
else { //иначе
x = 1; //считаем произведение её элементов
for (j = 0;j < n;j++)
x *= a[i][j];
}
s[i] = x; //Результат записываем в массив
}
// Вывод полученного одномерного массива до сортировки, если не надо, то удалите от сюда ...
cout << endl;
for (i = 0;i < m;i++)
cout << s[i] << ' ';
cout << endl;
// ... до сюда
for (i = 0;i < m - 1;i++) // Сортировка "пузырьком"
for (j = m - 1;j > i;j--)
if (s[j] < s[j - 1]) {
temp = s[j];
s[j] = s[j - 1];
s[j - 1] = temp;
}

cout << endl;
for (i = 0;i < m;i++)
cout << s[i] << ' ';
cout << endl;

return 0;
}

Результат работы программы в приложенном файле
Среда программирования: Microsoft Visual Studio C++ 2015
Прикрепленные файлы:
b88d57c5867a3fbca2bf97a366cdaccfb5d0db15.JPG
5
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
давно
Студент
400828
51
27.05.2017, 07:15
общий
Задача № 2
Код:
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <time.h>

using namespace std;

const int m = 5;

int * * matrix_sum(int * * a, int * * b) {
int * * c = new int *[m];
for (int i = 0; i < m; i++)
c[i] = new int[m];

for (int i = 0;i < m;i++)
for (int j = 0;j < m;j++)
c[i][j] = a[i][j] + b[i][j];
return(c);
}

int matrix_norm(int * * a) {
int sum = 0;
for (int i = 0;i < m;i++)
for (int j = 0;j < m;j++)
sum += a[i][j];
return(sum);
}

int main()
{
int * * a = new int *[m], * * b = new int *[m], * * c = new int *[m], * s = new int [m], i, j, temp;
for (int i = 0; i < m; i++){
a[i] = new int[m];
b[i] = new int[m];
c[i] = new int[m];
}
srand(time(NULL));
for (i = 0;i<m;i++) {
for (j = 0;j < m;j++) {
a[i][j] = rand() % 9 + 1;
cout << a[i][j] << ' ';
}
cout << endl;
}
cout << endl;
for (i = 0;i<m;i++) {
for (j = 0;j < m;j++) {
b[i][j] = rand() % 9 + 1;
cout << b[i][j] << ' ';
}
cout << endl;
}
cout << endl;
for (i = 0;i<m;i++) {
for (j = 0;j < m;j++) {
c[i][j] = rand() % 9 + 1;
cout << c[i][j] << ' ';
}
cout << endl;
}
cout << endl;
for (i = 0;i < m;i++)
s[i] = a[i][i];
// Вывод полученного одномерного массива до сортировки, если не надо, то удалите от сюда ...
cout << endl;
for (i = 0;i < m;i++)
cout << s[i] << ' ';
cout << endl;
// ... до сюда
for (i = 0;i < m - 1;i++)
for (j = m - 1;j > i;j--)
if (s[j] < s[j - 1]) {
temp = s[j];
s[j] = s[j - 1];
s[j - 1] = temp;
}

cout << endl;
for (i = 0;i < m;i++)
cout << s[i] << ' ';
cout << endl;
cout << (matrix_norm(matrix_sum(a, c)) + matrix_norm(matrix_sum(a, b))) / matrix_norm(matrix_sum(b, c));
for (int i = 0; i < m; i++){
delete[] a[i];
delete[] b[i];
delete[] c[i];
}
delete[] a;
delete[] b;
delete[] c;
delete[] s;

return 0;
}
Об авторе:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Форма ответа