Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 70
1

Функция заполняющая матрицу случайными числами

29.11.2016, 10:43. Просмотров 1593. Ответов 10
Метки нет (Все метки)

Дорогие форумчане,помогите пожалуйста приделать функцию рандомного ввода чисел, ручной ввод есть, а нужно что бы был выбор, как заполнить матрицу.Заранее спасибо
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
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 <iostream>
 
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 << "Сумма положительных элементов: " << sumElement << endl;
    cout << " Произведение положительных элементов: " << compositionElement << endl;
}
 
 
 
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; i<m; i++)
        {
            mass[i] = new int[m];
        }
        cout << "Создается массив размерностью:" << m << "," << n << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j<n; 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 && n <= 0)
    {
        cout << "\n\tМассив пуст.\n";
    }
    else
    {
        for (int i = 0; i<m; i++)
        {
            for (int j = 0; j<n; j++)
            {
                cout << mass[i][j] << " ";
            }
            cout << endl;
        }
    }
 
    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; i<m; i++)
    {
        mass[i] = new int[m];
    }
 
    setlocale(LC_ALL, "Rus");
    do
    {
        cout << endl;
        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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2016, 10:43
Ответы с готовыми решениями:

Функция заполняющая массив случайными числами
Задача 6. Создайте функцию, заполняющую массив случайными числами. Массив для заполнения...

Функция, заполняющая массив псевдослучайными числами в заданном пользователем диапазоне без повторений
Тема: Функции2. 4. Реализовать функцию RandWithoutRepetition, с помощью которой можно было бы...

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки

10
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.11.2016, 11:13 2
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
#include <iostream>
#include <random>
 
void Gen(int **arr, const int M, const int N)
{
    static std::mt19937 gen {std::random_device()()};
    static std::uniform_int_distribution<int> dist(0, 99);
 
    for (int i=0; i < M; i++)
        for (int j=0; j < N; j++)
            arr[i][j] = dist(gen);
}
 
void Print(int **arr, const int M, const int N)
{
    for (int i=0; i < M; i++)
    {
        for (int j=0; j < N; j++)
            std::cout << arr[i][j] << " ";
        std::cout << std::endl;
    }
}
 
int main()
{
    const int M = 5, N = 3;
    // выделяем память
    int **A = new int*[M];
    for (int i=0; i < M; i++)
        A[i] = new int[N];
 
    Gen(A, M, N);
    Print(A, M, N);
 
    // освобождаем память
    for (int i=0; i < M; i++)
        delete[] A[i];
    delete[] A;
}
1
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 70
29.11.2016, 11:27  [ТС] 3
MrGluck, благодарю, а нельзя как то проще записать функцию рандомного ввода? Боюсь преподаватель может придраться
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.11.2016, 11:31 4
Лучший ответ Сообщение было отмечено sahafarik как решение

Решение

Цитата Сообщение от sahafarik Посмотреть сообщение
как то проще записать
Там всего две переменные, вложенный цикл и обычное присваивание.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <cstdlib>
#include <ctime>
 
void Gen(int **arr, const int M, const int N)
{
    srand(time(nullptr));
 
    for (int i=0; i < M; i++)
        for (int j=0; j < N; j++)
            arr[i][j] = rand() % 100;
}
1
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 70
29.11.2016, 14:24  [ТС] 5
MrGluck, Все собрал, только вот почему то когда выбираю рандомный ввод и после этого вывожу на экран, всегда пишет массив пуст. А если сначала проделаю все вручную, а после этого нажму рандом, то все работает, что нужно сделать что бы сразу в рандоме были числа

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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <ctime>
 
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 << "Сумма положительных элементов: " << sumElement << endl;
    cout << " Произведение положительных элементов: " << compositionElement << endl;
}
 
 
 
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; i<m; i++)
        {
            mass[i] = new int[m];
        }
        cout << "Создается массив размерностью:" << m << "," << n << endl;
        for (int i = 0; i < m; i++)
        {
            for (int j = 0; j<n; 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 && n <= 0)
    {
        cout << "\n\tМассив пуст.\n";
    }
    else
    {
        for (int i = 0; i<m; i++)
        {
            for (int j = 0; j<n; j++)
            {
                cout << mass[i][j] << " ";
            }
            cout << endl;
        }
    }
 
    return 0;
}
 
void Gen(int **arr, const int M, const int N)
{
    srand(time(nullptr));
 
    for (int i = 0; i < M; i++)
    for (int j = 0; j < N; j++)
        arr[i][j] = rand() % 100 - 50;
}
 
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; i<m; i++)
    {
        mass[i] = new int[m];
    }
 
    setlocale(LC_ALL, "Rus");
    do
    {
        cout << endl;
        cout << "\n1.\tCоздание нового массива в ручную\n";
        cout << "2.\tСоздание нового массива рандомно\n";
        cout << "3.\tВывести массив на экран\n";
        cout << "4.\tНайти сумму и произведение положительных элементов\n";
        cout << "5.\tВыход\n\n";
        cout << "Выберите нужный вам пункт.\n";
        cin >> d;
 
        switch (d)
        {
        case 1:
 
            create_mass(m, n, mass);
            break;
        case 2:
 
            Gen(mass,m, n);
            break;
        case 3:
            output_mass(m, n, mass);
            break;
        case 4:
            // моя задача;
            func(m, n, mass);
            break;
        case 5:
            if (mass != 0)
            {
                delete mass;
            }
            break;
            cout << " Такой пункт не существует.\n";
        }
 
    } while (d != 5);
 
    return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.11.2016, 14:40 6
Цитата Сообщение от sahafarik Посмотреть сообщение
что нужно сделать что бы сразу в рандоме были числа
Нужно размеры указывать и память выделять в теле main.
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 70
29.11.2016, 14:43  [ТС] 7
MrGluck, Можно на примере пожалуйста?
0
Модератор
Эксперт С++
9913 / 8436 / 5129
Регистрация: 18.12.2011
Сообщений: 22,581
29.11.2016, 14:44 8
sahafarik, А почему не посмотрели вот это (из раздела ВАЖНОЕ!!!!!):
Образцы (шаблоны) программ для типовых задач
0
0 / 0 / 0
Регистрация: 26.10.2016
Сообщений: 70
29.11.2016, 14:56  [ТС] 9
zss, Я смотрел, все равно выбивает сообщение, что массив пуст. Вот и прошу помощи
0
Форумчанин
Эксперт CЭксперт С++
8160 / 5008 / 1436
Регистрация: 29.11.2010
Сообщений: 13,458
29.11.2016, 15:46 10
Лучший ответ Сообщение было отмечено sahafarik как решение

Решение

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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <iostream>
#include <time.h>
#include <cstdlib>
#include <ctime>
 
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 << "Сумма положительных элементов: " << sumElement << endl;
    cout << " Произведение положительных элементов: " << compositionElement << endl;
}
 
 
 
int create_mass(int &m, int &n, int **&mass)
{
    cout << "Создается массив размерностью:" << m << "," << n << endl;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j<n; 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 && n <= 0)
    {
        cout << "\n\tМассив пуст.\n";
    }
    else
    {
        for (int i = 0; i<m; i++)
        {
            for (int j = 0; j<n; j++)
            {
                cout << mass[i][j] << " ";
            }
            cout << endl;
        }
    }
 
    return 0;
}
 
void Gen(int **arr, const int M, const int N)
{
    srand(time(nullptr));
 
    for (int i = 0; i < M; i++)
    for (int j = 0; j < N; j++)
        arr[i][j] = rand() % 100 - 50;
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int n = 0, m = 0;
    int **mass;
    int d = 0;
 
    cout << "Введите размерность массива.\n";
    cout << "Введите количество рядков массива: ";
    cin >> m;
    cout << "Введите количество столбцов массива: ";
    cin >> n;
    if (m <= 0 && n <= 0)
    {
        cout << "\n Заданый массив не имеет размера.\n";
        return 1;
    }
 
    mass = new int*[m];
    for (int i = 0; i<m; i++)
    {
        mass[i] = new int[n];
    }
 
    setlocale(LC_ALL, "Rus");
    do
    {
        cout << endl;
        cout << "\n1.\tCоздание нового массива вручную\n";
        cout << "2.\tСоздание нового массива рандомно\n";
        cout << "3.\tВывести массив на экран\n";
        cout << "4.\tНайти сумму и произведение положительных элементов\n";
        cout << "5.\tВыход\n\n";
        cout << "Выберите нужный вам пункт.\n";
        cin >> d;
 
        switch (d)
        {
        case 1:
 
            create_mass(m, n, mass);
            break;
        case 2:
 
            Gen(mass,m, n);
            break;
        case 3:
            output_mass(m, n, mass);
            break;
        case 4:
            // моя задача;
            func(m, n, mass);
            break;
        case 5:
            if (mass != 0)
            {
                delete mass;
            }
            break;
            cout << " Такой пункт не существует.\n";
        }
 
    } while (d != 5);
 
 
    for (int i = 0; i<m; i++)
        delete[] mass[i];
    delete[] mass;
 
    return 0;
}
1
Модератор
Эксперт С++
9913 / 8436 / 5129
Регистрация: 18.12.2011
Сообщений: 22,581
29.11.2016, 16:03 11
Лучший ответ Сообщение было отмечено sahafarik как решение

Решение

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
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <cstdlib>
#include <ctime>
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 << "Сумма положительных элементов: " << sumElement << endl;
    cout << " Произведение положительных элементов: " << compositionElement << endl;
}
 
 
 
int create_mass(int &m, int &n, int **&mass)
{
    cout << "Введите количество строк массива: ";
    cin >> m;
    cout << "Введите количество столбцов массива: ";
    cin >> n;
    if (m <= 0 && n <= 0)
    {
        cout << "\n Такой массив нельзя создать.\n";
    }
    else
    {
        mass = new int*[m];
        for (int i = 0; i<m; i++)
        {
            mass[i] = new int[m];
        }
        cout << "Создан массив размерностью:" << m << "," << n << endl;
    }
    return 0;
}
int input_mass(int **mass, int m, int n)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j<n; 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 && n <= 0)
    {
        cout << "\n\tМассив пуст.\n";
    }
    else
    {
        for (int i = 0; i<m; i++)
        {
            for (int j = 0; j<n; j++)
            {
                cout << mass[i][j] << " ";
            }
            cout << endl;
        }
    }
 
    return 0;
}
 
void Gen(int **arr, const int M, const int N)
{
    srand((unsigned)time(NULL));
 
    for (int i = 0; i < M; i++)
        for (int j = 0; j < N; j++)
            arr[i][j] = rand() % 100 - 50;
}
void DeleteMass(int m,int** mass)
{
    if(mass!=NULL)
    {
        for (int i = 0; i < m; i++)
            delete[] mass[i];
        delete[] mass;
    }
}
 
int main()
{
    int n = 0, m = 0;
    int **mass=NULL;
    int d = 0;
    setlocale(LC_ALL, "Rus");
    do
    {
        cout << endl;
        cout << "\n1.\tCоздание нового массива\n";
        cout << "2.\tЗаполнение массива рандомно\n";
        cout << "3.\tВвод массива\n";
        cout << "4.\tВывести массив на экран\n";
        cout << "5.\tНайти сумму и произведение положительных элементов\n";
        cout << "6.\tВыход\n\n";
        cout << "Выберите нужный вам пункт.\n";
        cin >> d;
 
        switch (d)
        {
        case 1:
            create_mass(m, n, mass);
            break;
        case 2:
            if(mass==NULL)
                create_mass(m, n, mass);
            Gen(mass,m, n);
            break;
        case 3:
            if(mass==NULL)
                create_mass(m, n, mass);
            input_mass(mass,m, n);
            break;
        case 4:
            if(mass==NULL)
            {
                create_mass(m, n, mass);
                Gen(mass,m, n);
            }
            output_mass(m, n, mass);
            break;
        case 5:
            // моя задача;
            if(mass==NULL)
            {
                create_mass(m, n, mass);
                Gen(mass,m, n);
                output_mass(m, n, mass);
            }
            func(m, n, mass);
            break;
        case 6:
            DeleteMass(m, mass);
            break;
        default:
            cout << " Такой пункт не существует.\n";
        }
 
    } while (d < 6);
 
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2016, 16:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали

Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поме
Помогите пожалуйста есть некоторые мысли, ну успешного ответа нет :((( #include &lt;iostream&gt;...

Заполнить матрицу случайными числами
Заполнить матрицу случайными числами. Показать главную и побочную диагонали симметрично...

Заполнить матрицу случайными числами
отобразить матрицу симметрично относительно главной диагонали


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.