0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 6
1

Каждую строку матрицы умножить на некоторое число

09.06.2021, 11:58. Показов 1213. Ответов 3
Метки с++ (Все метки)

Тут такое задание.. (я начинающий программист, тапочками не кидаться)) создать двумерный динамический массив, найти минимальный элемент каждой строки и затем каждую строку массива умножить на её минимальный элемент. Я написала часть кода, с выводом минимальных элементов проблем нет, но вот с умножением на них я что-то не пойму. Как умножить на элемент весь массив мне понятно, а по отдельности не знаю как(на всякий случай часть с умножением на элемент я оставила в коде, предварительно закомментировав)
вот код:
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
#include <iostream>
#include <ctime>
#include <iomanip>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, R"(Rus)");
    int n, m;
    cout << "Введите колличество строк(n):";
    cin >> n;
    cout << "Введите колличество столбцов(m):";
    cin >> m;
    srand(time(0));
    int** a = new int* [n];
    for (int k = 0; k < n; k++)
        a[k] = new int[m];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            a[i][j] = (rand() % 10);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << a[i][j] << "   ";
        cout << endl;
    }
 
    for (int i = 0; i != n; ++i) {
        int min = a[i][0];
        for (int j = 1; j != m; ++j) {
            if (min > a[i][j])
                min = a[i][j];
        }
        cout << "Строка №" << i + 1 << ": минимальный элемент = " << min << '\n' << endl;
 
    //    int** b = new int* [n];
    //    for (int k = 0; k < n; k++)
    //        b[k] = new int[m];
    //    for (int i = 0; i < n; i++)
    //        for (int j = 0; j < m; j++)
    //            b[i][j] = a[i][j] * min;
    //    for (int i = 0; i < n; i++)
    //    {
    //        for (int j = 0; j < m; j++)
    //            cout << b[i][j] << "   ";
    //        cout << endl;
    //    }
    //}
    system("pause");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2021, 11:58
Ответы с готовыми решениями:

Каждую строку матрицы умножить на случайное число
Язык С++ • Создать функцию, которая на вход принимает одномерный массив. Из одномерного массива...

Каждую строку матрицы умножить на случайное число
Нужно каждую строку умножить на случайное число. В этом месте: &quot; array*f; &quot; выдает ошибку :&quot;...

Умножить каждую строку исходной матрицы на наименьший по значению элемент соответствующей строки
Получить новую матрицу путем умножения элементов каждой строки исходной матрицы на наименьший по...

каждый член матрицы умножить на некоторое число
создал программу которая складывает 2 матрицы....ниже приведен код private void...

3
Модератор
Эксперт С++
12095 / 9769 / 5907
Регистрация: 18.12.2011
Сообщений: 26,227
09.06.2021, 12:40 2
Лучший ответ Сообщение было отмечено EvilCookie1005 как решение

Решение

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
#include <iostream>
#include <ctime>
//#include <iomanip>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int n, m;
    cout << "Введите колличество строк(n):";
    cin >> n;
    cout << "Введите колличество столбцов(m):";
    cin >> m;
    cin.get(); // убрать '\n' из потока
//------------создание объектов---------------
    srand((unsigned)time(0));
    int** a = new int* [n];
    int* minval=new int[n];
    for (int k = 0; k < n; k++)
        a[k] = new int[m];
//-----------инициализация-------------------------
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            a[i][j] = rand() % 100;
//--------------вывод ----------------------
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << a[i][j] << "   ";
        cout << endl;
    }
//------------поиск минимальных------------------------
    for (int i = 0; i != n; ++i) 
    {
        minval[i] = a[i][0];
        for (int j = 1; j != m; ++j) 
            if (minval[i] > a[i][j])
                minval[i] = a[i][j];
        cout << "Строка №" << i + 1 << ": минимальный элемент = " 
            << minval[i] << endl;
    }
//--------------умножение----------------------
    for (int i = 0; i != n; ++i) 
    {
        for (int j = 0; j != m; ++j)
                a[i][j]*=minval[i];
    }
//---------------- вывод --------------------
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << a[i][j] << "   ";
        cout << endl;
    }
//---------- удаление созданных объектов --------------------------
    for (int k = 0; k < n; k++)
        delete[] a[k];
    delete[] a;
    delete[] minval;
 
    cin.get();
 
    return 0;
}
А лучше бы Вы воспользовались образцом из раздела ВАЖНЫЕ ТЕМЫ
Образцы (шаблоны) программ для типовых задач
Получился бы такой код:
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
#include <iostream>
#include <clocale>
#include <cstdlib>
#include <ctime>
//
// Создание матрицы
//
int ** Create( size_t n, size_t m ) {
    int ** M = new int * [n];
    for ( size_t i = 0; i < n; ++i ) {
        M[i] = new int [m];
    }
    return M;
}
//
// Удаление матрицы
//
void Free( int ** M, size_t n ) {
    for ( size_t i = 0; i < n; ++i ) {
        delete [] M[i];
    }
    delete [] M;
}
//
//---- ввод матрицы--------------------------------------
//
void Input( int ** M, size_t n, size_t m ) {
    for ( size_t i = 0; i < n; ++i ) {
        for ( size_t j = 0; j < m; ++j ) {
            std::cout << "M[" << i << "][" << j << "] = ";
            std::cin >> M[i][j];
        }
    }
}
//
// заполнение матрицы случайными числами из диапазона [0, 99] -----------
//
void FillRandomNumbers(int **matrix, const size_t rows, const size_t columns)
{
    srand((unsigned int)time(0)); // инициализируем ПГСЧ
 
    for (size_t row=0; row < rows; row++)
        for (size_t column=0; column < columns; column++)
            matrix[row][column] = rand() % 100; // присваиваем СЧ
}
//
//-------- Печать матрицы ------------------------------------------------
//
void Print( int ** M, size_t n, size_t m ) {
    for ( size_t i = 0; i < n; ++i ) {
        for ( size_t j = 0; j < m; ++j ) {
            std::cout<<M[i][j]<<' ';
        }
        std::cout<<std::endl;
    }
}
//
// Обработка матрицы - минимумы в каждой строке
//
void Process1( int ** M,int *Sum, size_t n, size_t m ) {
    for ( size_t i = 0; i < n; ++i ) {
        Sum[i] = M[i][0];
        for ( size_t j = 1; j < m; ++j ) {
            if(Sum[i] > M[i][j])
                Sum[i] = M[i][j];
        }
    }
}
//
// Обработка матрицы - умножение элемнтов строки
//
void Process2( int ** M,int *Sum, size_t n, size_t m ) {
    for ( size_t i = 0; i < n; ++i )
        for ( size_t j = 1; j < m; ++j )
                M[i][j]*=Sum[i];
}
 
int main()
{
    setlocale( LC_ALL, "Rus" ); // установление русской локали (windows)
 
    size_t n, m;
 
    // вводим размерность матрицы
    std::cout << "Введите количество строк матрицы: ";
    std::cin >> n;
    std::cout << "Введите количество столбцов матрицы: ";
    std::cin >> m;
 
    // выделяем память под матрицу
    int ** A = Create( n, m );
 
    // ввод матрицы
    //Input( A, n, m );
    // заполнение случайными числами (вместо ввода)
    FillRandomNumbers(A,n,m);
 
    // Вывод матрицы
    Print(A,n,m);
 
    // обработка матрицы
    int* S=new int[n]; // Вектор результата
    Process1( A, S, n, m ); // минимумы
    Process2( A, S, n, m ); // умножение на минимумы
 
    // вывод минимумов
    for(size_t i=0;i<n;i++) 
        std::cout << "Строка №" << i + 1 << ": минимальный элемент = "
            << S[i] <<std::endl;
 
    // Вывод результата умножения
    Print(A,n,m);
 
    // освобождаем память, выделенную под матрицу и вектор
    delete[] S;
    Free( A, n );
 
    // ждём нажатия клавиши перед выходом из приложения (windows)
    system( "pause" );
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 18.12.2020
Сообщений: 6
09.06.2021, 12:46  [ТС] 3
Спасибо большое за помощь
0
7416 / 5011 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
09.06.2021, 13:04 4
без дополнительного массива:
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
int main()
{ 
    srand((int)time(0));
    int n, m, min;
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    
      int** a = new int* [n];
    for (int i = 0; i < n; i++)
        a[i] = new int[m];
        
    cout << "Array:\n";    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            a[i][j]=rand()%9 + 1;
            cout << setw(3) << a[i][j];
        }
        cout << "\n";
    }
 
    for (int i = 0; i < n; i++) 
    {
        min=a[i][0];
        for (int j = 1; j < m; j++) 
            if (a[i][j]<min) min=a[i][j];
            
        cout << "Row" << i+1 << ":  min=" << min << "\n";    
            
        for (int j = 0; j < m; j++) 
            a[i][j]*=min;
    }
    
    cout << "Array after multiplication:\n";
    for (int i = 0; i < n; i++)
    {   
        for (int j = 0; j < m; j++)        
            cout << setw(3) << a[i][j];
        cout << "\n";
    }
    
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2021, 13:04
Помогаю со студенческими работами здесь

Умножить каждую строку матрицы на ее наибольший по модулю элемент
Здравствуйте, помогите пожалуйста, кому не сложно! Дан текстовый файл, содержащий n строк. В...

Умножить k-ю строку матрицы А на заданное число
Задача: Умножить k-ю строку матрицы А на заданное число. Моя программа: #include &quot;stdafx.h&quot;...

строку матрицы А,1 строку матрицы В умножить на R,где R-максимальный из элементов матриц А,В
Даны матрицы А и В. 2 строку матрицы А,1 строку матрицы В умножить на R,где R-максимальный из...

Заполнить каждую строку матрицы значениями полученными при умножении элементов исходного массива на заданное число
Напишите программу для решения следующей задачи в С++ Дан массив array из целых чисел. Создайте...

Дано 6-ти значное число. Каждую нечетную цифру умножить на 2, а к каждой четной прибавить 3
Дано 6-ти значное число. Каждую нечетную цифру умножить на 2, а к каждой четной прибавить 3....

Дано 6-ти значное число. Каждую нечетную цифру умножить на 2, а к каждой четной прибавить 3
Дано 6-ти значное число. Каждую нечетную цифру умножить на 2, а к каждой четной прибавить 3....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru