Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 4

Формирование массива из матрицы

14.05.2020, 18:09. Показов 1328. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Нужно из двух матриц соответственно сформировать массивы, состоящие из максимальных элементов столбцов этих матриц. Работа должна быть выполнена с использованием функций с параметрами
Помогите, пожалуйста, исправить код, никак не получатся нормально сформировать массивы.
Ещё матрицы всегда одинаковые. Если пытаюсь это изменить - они вообще ещё и между собой становятся одинаковыми, как это исправить?

C++
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
#include <iostream>
#include <iomanip>
#include <time.h>
 
using namespace std;
typedef int matr[3][6];
typedef int mas[6];
// Функция формирования матрицы
void input(matr a, int n, int m)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) a[i][j] = rand() / 100 - 100;
}
// Функция вывода значений матрицы
void output(matr a, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << setw(6) << a[i][j];
        cout << endl;
    }
}
// Функция формирования массива
void form(matr a, mas b, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        int max = a[i][0];
        for (int j = 0; j < m; j++)
            if (a[i][j] > max)max = a[i][j], b[i] = max;
    }
}
// Функция вывода значений массива
void output_mas(mas b, int m)
{
    for (int i = 0; i < m; i++) cout << setw(6) << b[i];
    cout << endl;
}
int main()
{
    setlocale(LC_CTYPE, "Russian");
    matr a, b;
    mas p, q;
    input(a, 3, 6);
    cout << "Матрица A>" << endl;
    output(a, 3, 6);
    input(b, 3, 6);
    cout << "Матрица B>" << endl;
    output(b, 3, 6);
    form(a, p, 3, 6);
    form(b, q, 3, 6);
    cout << "Массив C" << endl;
    output_mas(p, 6);
    cout << "Массив D" << endl;
    output_mas(q, 6);
 
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.05.2020, 18:09
Ответы с готовыми решениями:

Формирование матрицы из массива по заданной схеме
Даны действительные числа a1,...,a64. Получить действительную квадратную матрицу порядка 8, элементами которой являются числа a1,..., a64,...

Формирование матрицы из элементов одномерного массива
Даны действительные числа A1,...An . Получить квадратную матрицу порядка n, имеющую следующий вид: \begin{bmatrix}a_1 &amp; a_2 &amp;...

Формирование одномерного массива из элементов матрицы
Здравствуйте. Помогите, пожалуйста или подскажите , как это можно сделать. Задание: Из номеров строк содержащих максимальный элемент...

5
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2020, 18:56
Лучший ответ Сообщение было отмечено Tertelin как решение

Решение

C++
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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void Random (double **x, int n, int m)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
        x[i][j]=rand()%9 + 1;
}
 
double *Create (double **x, int n, int m)
{   
    double *c = new double[m];
    
    for (int j = 0; j < m; j++)
    {
        c[j]=x[0][j];
        for (int i = 0; i < n; i++) 
        if (x[i][j]>c[j]) c[j]=x[i][j];       
    }
    return c;
}
 
void Print2D (double **x, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)       
        cout << x[i][j] << " ";        
    cout << "\n";
    }
} 
 
void Print (double *x, int n)
{
    for (int i = 0; i < n; i++)             
        cout << x[i] << " ";        
    cout << "\n";    
} 
 
int main()
{
    srand((int)time(0));
    int nA, mA, nB, mB;
    
    cout << "Enter size matrix A:\n";
    cout << "row="; cin >> nA;
    cout << "col="; cin >> mA;
    cout << "Enter size matrix B:\n";
    cout << "row="; cin >> nB;
    cout << "col="; cin >> mB;    
    
      double **A = new double*[nA]; 
    for (int i = 0; i < nA; i++)
      A[i]=new double[mA];
      
      double **B = new double*[nB]; 
    for (int i = 0; i < nB; i++)
      B[i]=new double[mB];
    
    cout << "Matrix A:\n";
    Random(A,nA,mA);
    Print2D(A,nA,mA);
    double *a=Create(A,nA,mA);
    cout << "Array a:\n";
    Print(a,mA); 
    
    cout << "\nMatrix B:\n";
    Random(B,nB,mB);
    Print2D(B,nB,mB);
    double *b=Create(B,nB,mB);
    cout << "Array b:\n";
    Print(b,mB);
 
    for (int i = 0; i < nA; i++)    
    delete[]A[i];    
    delete[]A;
    for (int i = 0; i < nB; i++)    
    delete[]B[i];    
    delete[]B;
    delete[]a;
    delete[]b;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 4
14.05.2020, 19:48  [ТС]
Спасибо! Поучилось после исправления у себя на
C++
1
2
3
4
5
    for (int j = 0; j < m; j++)
    {
        b[j] = a[0][j];
        for (int i = 0; i < n; i++)
            if (a[i][j] > b[j])b[j] = a[i][j];
Но остался вопрос по поводу рандома, можно ли в моём варианте сделать разное значение матриц с каждым запуском? В методичке у нас примеры тоже с одинаковыми числами, хотелось бы знать для себя
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2020, 19:52
Цитата Сообщение от Tertelin Посмотреть сообщение
Но остался вопрос по поводу рандома
я Вам написал решение на задачу. рандом там тоже есть. что ещё требуется ?
0
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 4
14.05.2020, 19:56  [ТС]
У Вас оно разное за счёт другого способа решения. Мне хотелось бы разобраться, можно ли сделать разное в моём коде грубо говоря, добавив пару строчек, или же нужно внести более глобальные изменения
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
14.05.2020, 20:15
Цитата Сообщение от Tertelin Посмотреть сообщение
В методичке у нас примеры тоже с одинаковыми числами, хотелось бы знать для себя
Рандом с++
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.05.2020, 20:15
Помогаю со студенческими работами здесь

Формирование одномерного массива из сумм элементов каждой строки матрицы, кратных числу k
Все, вроде, правильно, но выводит только первый элемент попавший в if. #include &lt;conio.h&gt; #include &lt;iostream&gt; ...

Формирование для каждой матрицы массива, состоящего из минимальных элементов строк матрицы
Помогите, пожалуйста, найти ошибку в программе. Выводит неверно элементы. interface uses Windows, Messages, SysUtils,...

Формирование массива из элементов матрицы
Создать модуль , содержащий подпрограмму в которой нужно создать два двумерных массива ,а после этого из них еще нужно сделать один...

Формирование массива из элементов матрицы
Доброго времени суток. Помогите, пожалуйста, с решением задачи... совершенно не понимаю массивы. Дана прямоугольная целочисленная...

Формирование матрицы и массива по условию.
Обработка двумерных массивов с помощью подпрограмм. Использовать процедуры ввода и вывода элементов матрицы. И если не трудно, еще блок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru