Форум программистов, компьютерный форум CyberForum.ru

Написать программу, реализующую умножение прямоугольных целочисленных матриц - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
03.12.2013, 16:57     Написать программу, реализующую умножение прямоугольных целочисленных матриц #1
Написать программу, реализующую умножение прямоугольных целочисленных
матриц.
у меня ошибка, программа запускается и сразу прекращается

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
void intmas1 (int **mas, int const  n, int const m);
void intmas2(int **mas, int const n, int const m);
int Proizved(int **mas, const int n, const int m);
 
int main()
{
    srand((unsigned)time(0));
    int n=3;
    int m=3;
 
    int **mas = new int*[n];
    for ( int i = 0; i < n; i++)
        mas[i] = new int[m];
        intmas1(mas,n,m);
        intmas2(mas,n,m);
        cout << '\n';
 
 cout << '\n';
 
       cout<< Proizved(mas,n,m);
    return 0;
}
 
void intmas1 (int **mas, const int n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
            mas[i][j]=rand() %10-2;
    }
}
 
void intmas2(int **mas, int const n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
    cout << mas[i][j] << " ";
    cout << endl;
    }
}
int Proizved(int **mas, const int n, const int m)
{
  int i,j,k;
  for ( i = 0; i < n; i++)
  {
    for (j = 0; j < n; j++)
    {
      mas[i][j] = 0;
      for ( k = 0; k < n; k++)
      {
        mas[i][j] += mas[i][k] * mas[k][j];
      }
    }
  }
  return mas[i][j];
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 16:57     Написать программу, реализующую умножение прямоугольных целочисленных матриц
Посмотрите здесь:

написать программу, которая вводит и суммирует любое количество целочисленных значений C++
C++ Умножение треугольных матриц«Методы обработки разреженных матриц»
Написать программу, реализующую игру в кости C++
C++ нужно написать программу на с++ реализующую все возможности печатной машинки
Умножение целочисленных прямоугольных матриц C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
03.12.2013, 17:26     Написать программу, реализующую умножение прямоугольных целочисленных матриц #2
Добавлено через 12 минут
C++
1
return mas[i][j]
исправь на:

C++
1
return **mas;
и в конце main()
перед
C++
1
return 0;
добавь такую строку:
C++
1
system("Pause");
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
03.12.2013, 23:39  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #3
FAQEnD, просто число выводит, одно
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 00:02     Написать программу, реализующую умножение прямоугольных целочисленных матриц #4
C++
1
2
3
4
5
6
7
8
9
    Proizved(mas,n,m);
    int i,j;
    for(i = 0; i < n; i++)
    {
        for(j=0; j<m; j++)
            cout<<mas[i][j]<<"      ";
        cout<<endl;
    }
    return 0;
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 00:46  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #5
FAQEnD, помоги пожалуйста, а в функции где ошибка, а то он не правильно их произведение считает(
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 01:19     Написать программу, реализующую умножение прямоугольных целочисленных матриц #6
Цитата Сообщение от Troo Посмотреть сообщение
FAQEnD, помоги пожалуйста, а в функции где ошибка, а то он не правильно их произведение считает(
Скинь свой текущий код
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 19:35  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #7
FAQEnD,


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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
void intmas1 (int **mas, int const  n, int const m);
void intmas2(int **mas, int const n, int const m);
int Proizved(int **mas, const int n, const int m);
 
int main()
{
    srand((unsigned)time(0));
    int n=3;
    int m=3;
 
    int **mas = new int*[n];
    for ( int i = 0; i < n; i++)
        mas[i] = new int[m];
        intmas1(mas,n,m);
        intmas2(mas,n,m);
        cout << '\n';
 Proizved(mas,n,m);
    for(int i = 0; i < n; i++)
    {
        for(int j=0; j<m; j++)
            cout<<mas[i][j]<<"      ";
        cout<<endl;
    }
 
    return 0;
}
 
void intmas1 (int **mas, const int n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
            mas[i][j]=rand() %10-2;
    }
}
 
void intmas2(int **mas, int const n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
    cout << mas[i][j] << " ";
    cout << endl;
    }
}
int Proizved(int **mas, const int n, const int m)
{
  int i,j,k;
  for ( i = 0; i < n; i++)
  {
    for (j = 0; j < n; j++)
    {
      mas[i][j] = 0;
      for ( k = 0; k < n; k++)
      {
        mas[i][j] += mas[i][k] * mas[k][j];
      }
    }
  }
  return **mas;
}
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 19:49     Написать программу, реализующую умножение прямоугольных целочисленных матриц #8
у тебя же только 1 матрица есть. А перемножать нужно матрицу на матрицу
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 19:54  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #9
FAQEnD, ну вот нашу я вторую рандомную, а как её в функцию добавить?

Добавлено через 1 минуту
все равно что-то не то

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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
void intmas1 (int **mas, int const  n, int const m);
void intmas2(int **mas, int const n, int const m);
int Proizved(int **mas, const int n, const int m);
 
int main()
{
    srand((unsigned)time(0));
    int n=3;
    int m=3;
 
    int **mas = new int*[n];
    for ( int i = 0; i < n; i++)
        mas[i] = new int[m];
        intmas1(mas,n,m);
        intmas2(mas,n,m);
        cout << '\n';
        intmas1(mas,n,m);
        intmas2(mas,n,m);
 Proizved(mas,n,m);
    for(int i = 0; i < n; i++)
    {
        for(int j=0; j<m; j++)
            cout<<mas[i][j]<<"      ";
        cout<<endl;
    }
 
    return 0;
}
 
void intmas1 (int **mas, const int n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
            mas[i][j]=rand() %10-2;
    }
}
 
void intmas2(int **mas, int const n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
    cout << mas[i][j] << " ";
    cout << endl;
    }
}
int Proizved(int **mas, const int n, const int m)
{
  int i,j,k;
  for ( i = 0; i < n; i++)
  {
    for (j = 0; j < n; j++)
    {
      mas[i][j] = 0;
      for ( k = 0; k < n; k++)
      {
        mas[i][j] += mas[i][k] * mas[k][j];
      }
    }
  }
  return **mas;
}
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 19:56     Написать программу, реализующую умножение прямоугольных целочисленных матриц #10
C++
1
2
3
4
5
 intmas1(mas,n,m);
        intmas2(mas,n,m);
        cout << '\n';
        intmas1(mas,n,m);
        intmas2(mas,n,m);
ты работаешь с одной и той-же матрицей, а нужно создать еще одну:
C++
1
2
3
int **mas2 = new int*[n];
    for ( int i = 0; i < n; i++)
        mas2[i] = new int[m];
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:02  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #11
FAQEnD, не правильное произведение опять, может у меня какая-то ошибка в самой функции?



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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
using namespace std;
void intmas1 (int **mas, int const  n, int const m);
void intmas2(int **mas, int const n, int const m);
void intmas3 (int **mas, int const  n, int const m);
void intmas4(int **mas, int const n, int const m);
int Proizved(int **mas, const int n, const int m);
 
int main()
{
    srand((unsigned)time(0));
    int n=3;
    int m=3;
 
    int **mas = new int*[n];
    for ( int i = 0; i < n; i++)
        mas[i] = new int[m];
        intmas1(mas,n,m);
        intmas2(mas,n,m);
        cout << '\n';
        int **mas2 = new int*[n];
    for ( int i = 0; i < n; i++)
        mas2[i] = new int[m];
        intmas3(mas2,n,m);
        intmas4(mas2,n,m);
  Proizved(mas,n,m);
    for(int i = 0; i < n; i++)
    {
        for(int j=0; j<m; j++)
            cout<<mas[i][j]<<"      ";
        cout<<endl;
    }
    return 0;
}
 
void intmas1 (int **mas, const int n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
            mas[i][j]=rand() %10-2;
    }
}
 
void intmas2(int **mas, int const n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
    cout << mas[i][j] << " ";
    cout << endl;
    }
}
void intmas3 (int **mas, const int n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
            mas[i][j]=rand() %10-2;
    }
}
 
void intmas4(int **mas, int const n, const int m)
{
    int i,j;
    for(i = 0; i < n; i++){
        for(j=0; j<m; j++)
    cout << mas[i][j] << " ";
    cout << endl;
    }
}
int Proizved(int **mas, const int n, const int m)
{
  int i,j,k;
  for ( i = 0; i < n; i++)
  {
    for (j = 0; j < n; j++)
    {
      mas[i][j] = 0;
      for ( k = 0; k < n; k++)
      {
        mas[i][j] += mas[i][k] * mas[k][j];
      }
    }
  }
  return **mas;
}
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 20:05     Написать программу, реализующую умножение прямоугольных целочисленных матриц #12
http://ru.wikipedia.org/wiki/%D0%A3%...80%D0%B8%D1%86
Почитай внимательно
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:08  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #13
FAQEnD, да я понимаю, проходили, но ведь не спроста такие числа вообще другие выводит
произведение не правильно считает
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 20:11     Написать программу, реализующую умножение прямоугольных целочисленных матриц #14
Цитата Сообщение от Troo Посмотреть сообщение
FAQEnD, да я понимаю, проходили, но ведь не спроста такие числа вообще другие выводит
произведение не правильно считает
Конечно не правильно
C++
1
mas[i][j] += mas[i][k] * mas[k][j];
нужно считать не произведение матрицы mas * mas, а произведение матриц mas1 * mas2.
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:16  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #15
FAQEnD, подскажи пожалуйста, как это записать, у меня не получается
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 20:29     Написать программу, реализующую умножение прямоугольных целочисленных матриц #16
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
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
    srand(time(NULL));
    int i, j, mas1[5][5], mas2[5][5], mas3[5][5];
    for(i = 0; i < 5; i++)
        for(j = 0; j < 5; j++)
        {
            mas1[i][j] = rand()%101-50;
            mas2[i][j] = rand()%101-50;
            mas3[i][j] = 0;
        }
    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
        {
            cout<<mas1[i][j]<<" ";
        }
        cout<<endl;
    }cout<<endl;
    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
        {
            cout<<mas2[i][j]<<" ";
        }
        cout<<endl;
    }
    for(i = 0; i < 5; i++)
        for(j = 0; j < 5; j++)
        {
            for(int k = 0; k < 5; k++)
                mas3[i][j] += mas1[i][k] * mas2[k][j];
        }
 
        cout<<endl;
    for(i = 0; i < 5; i++)
    {
        for(j = 0; j < 5; j++)
        {
            cout<<mas3[i][j]<<" ";
        }
        cout<<endl;
    }
    system("Pause");
    return 0;
}
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:34  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #17
FAQEnD, а по функциям не получается написать:
C++
1
mas3[i][j] += mas1[i][k] * mas2[k][j];
при объявлении массивов в начале функции, вообще большие числа выводит
C++
1
2
int mas2[n][m];
int mas3[n][m];
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 20:49     Написать программу, реализующую умножение прямоугольных целочисленных матриц #18
Цитата Сообщение от Troo Посмотреть сообщение
FAQEnD, а по функциям не получается написать:
C++
1
mas3[i][j] += mas1[i][k] * mas2[k][j];
при объявлении массивов в начале функции, вообще большие числа выводит
C++
1
2
int mas2[n][m];
int mas3[n][m];
ты хочешь разбить задачу на функции и плюс ко всему сделать массивы динамическими?
если да, то я приду через пару часов и напишу
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:52  [ТС]     Написать программу, реализующую умножение прямоугольных целочисленных матриц #19
FAQEnD, даа, буду очень благодарна за помощь)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 02:06     Написать программу, реализующую умножение прямоугольных целочисленных матриц
Еще ссылки по теме:

Транспонирование прямоугольных матриц C++
Умножение прямоугольных матриц C++
Написать программу, реализующую функцию конкатенации k строк C++

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

Или воспользуйтесь поиском по форуму:
FAQEnD
 Аватар для FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
05.12.2013, 02:06     Написать программу, реализующую умножение прямоугольных целочисленных матриц #20
Вводить размеры вида N1 x M1, N2 x M2, где M1 == N2. Иначе посчитать нельзя
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
#include <iostream>
#include <time.h>
using namespace std;
void rand_array(int **mas, int n, int m);
void zero_array(int **mas, int n, int m);
void cout_array(int **mas, int n, int m);
void op_array(int **mas1, int **mas2, int **mas3, int n, int m, int min);
int main()
{
    srand(time(NULL));
    int N1, M1, N2, M2;
    do
    {
        cout<<"Enter N1, M1, N2, M2"<<endl;
        cin>>N1>>M1>>N2>>M2;
        if(N2 != M1)
            cout<<"N2 != M1, Enter other size"<<endl;
    }while(N2 != M1);
    //создаем двухмерный динамический массив
    int **mas1 = new int*[N1];
    int **mas2 = new int*[N2];
    int **mas3 = new int*[N1];
    for ( int i = 0; i < N1; i++)
    {
        mas1[i] = new int[M1];
        mas3[i] = new int[M2];
    }
     for ( int i = 0; i < N2; i++)
    {
        mas2[i] = new int[M2];
    }
 
    //заполняем
    rand_array(mas1, N1, M1);
    rand_array(mas2, N2, M2);
    zero_array(mas3, N1, M2);
    //выводим на экран
    cout_array(mas1, N1, M1);
    cout_array(mas2, N2, M2);
    //считаем
    op_array(mas1, mas2, mas3, N1, M2, N2);
    cout<<endl;
    cout_array(mas3, N1, M2);
    system("Pause");
    return 0;
}
 
void rand_array(int **mas, int n, int m)
{
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            mas[i][j] = 1+rand()%5;
        }
}
 
void zero_array(int **mas, int n, int m)
{
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            mas[i][j] = 0;
        }
}
 
void cout_array(int **mas, int n, int m)
{
    for(int i = 0; i < n; i++)
        {
            for(int j = 0; j < m; j++)
            {
                cout<<mas[i][j]<<" ";
            }
            cout<<endl;
        }
    cout<<endl;
}
 
void op_array(int **mas1, int **mas2, int **mas3, int n, int m, int min)
{
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            for(int k = 0; k < min; k++)
            {
                mas3[i][j] += mas1[i][k] * mas2[k][j];
            }
        }
}
Yandex
Объявления
05.12.2013, 02:06     Написать программу, реализующую умножение прямоугольных целочисленных матриц
Ответ Создать тему
Опции темы

Текущее время: 07:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru