Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
#1

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

03.12.2013, 16:57. Просмотров 1280. Ответов 22
Метки нет (Все метки)

Написать программу, реализующую умножение прямоугольных целочисленных
матриц.
у меня ошибка, программа запускается и сразу прекращается

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];
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 16:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу, реализующую умножение прямоугольных целочисленных матриц (C++):

Написать программу, реализующую умножение прямоугольных целочисленных матриц (ошибка) - C++
Пыталась написать программу, но выводит шлак. Для квадратных матриц работает, как ни странно, для прямоугольных - нет. Найдите ошибку...

Умножение целочисленных прямоугольных матриц - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; void...

Умножение прямоугольных матриц - C++
Смотрел на форуме, но у меня все равно не работает( Что не так? void Multiply() { int p, g, n, m, i, j, k, s; float c; ...

Реализовать умножение прямоугольных матриц - C++
Здравствуйте. Только начал заниматься программированием. Начал с азов. но при написании произведения матриц столкнулся с такой проблемой ...

Написать программу, которая выполняет умножение двух матриц - C++
Написать программу, которая выполняет умножение двух матриц (матрицы не квадратные).

Написать функцию вычисления произведения прямоугольных матриц - C++
Написать функцию вычисления произведения прямоугольной матрицы A размера k × m на прямоугольную матрицу B размера m × n. Всем привет,...

22
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");
1
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
03.12.2013, 23:39  [ТС] #3
FAQEnD, просто число выводит, одно
1
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;
1
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 00:46  [ТС] #5
FAQEnD, помоги пожалуйста, а в функции где ошибка, а то он не правильно их произведение считает(
0
FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 01:19 #6
Цитата Сообщение от Troo Посмотреть сообщение
FAQEnD, помоги пожалуйста, а в функции где ошибка, а то он не правильно их произведение считает(
Скинь свой текущий код
0
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;
}
0
FAQEnD
43 / 43 / 1
Регистрация: 15.12.2012
Сообщений: 88
04.12.2013, 19:49 #8
у тебя же только 1 матрица есть. А перемножать нужно матрицу на матрицу
0
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;
}
0
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];
0
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;
}
0
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
Почитай внимательно
0
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:08  [ТС] #13
FAQEnD, да я понимаю, проходили, но ведь не спроста такие числа вообще другие выводит
произведение не правильно считает
0
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.
1
Troo
1 / 1 / 0
Регистрация: 09.10.2013
Сообщений: 73
04.12.2013, 20:16  [ТС] #15
FAQEnD, подскажи пожалуйста, как это записать, у меня не получается
0
04.12.2013, 20:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 20:16
Привет! Вот еще темы с ответами:

Написать программу, реализующую разбиение множества A - C++
Я считаю, что это задание очень актуально. На мой взгляд, она немного трудна в реализации, поэтому и прошу помощи. Я понимаю, что такое...

Написать программу, реализующую игру в кости - C++
Ребята, всем доброго времени суток... Посмотрите, пожалуйста, может кто то подскажет что дельное.... Не выполняется код. Задача:...

Написать программу, реализующую функцию конкатенации k строк - C++
Заранее благодарю.

Написать программу, реализующую обход доски шахматным конём - C++
Конь находится в клетке (x1,y1).Нужно вывести любой его путь из (x1,y1) в (x2,y2).Если это невозможно - выведите &quot;NO&quot;. Входные данные 1...


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

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

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