С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для akira_akai
17 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 77

Умножение матриц. Проверка Ошибок.

17.11.2011, 22:39. Показов 1422. Ответов 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
56
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main() {
      int i=1,j=1,k=1,l=1;
      int sum , rd1 , st1 , rd2 , st2 ;
      char ch;
      // ввод расширения первой матрицы.
      cout << "Vveditb rozmirnistb pershoi Matruci: ";
      cin >> rd1;
      cin >> st1;
      // ввод расширения 2 матрицы.
      cout << "Vveditb rozmirnistb dryhoi matruci: ";
      cin >> rd2;
      cin >> st2;
      // выход при не соответствии.  
      if (st1 != rd2) {
            cout << "\nMatruc9 ne ob4usljuets9!";
            getch();
            return 0;
      }
      // ввод элементов матриц.
      int a[rd1][st1];
      for (i=1; i<=rd1; i++){
            for (j=1; j<=st1; j++){
                  cout << "vveditb element a " << i << "_" << j << " = " << endl;
                  cin >> a[i][j];
                  }
            };
      
      int b[rd2] [st2];
      for (k=1; k<=rd2; k++){
            for (l=1; l<=st2; l++){
                  cout << "vveditb element b " << k << "_" << l << " = " << endl;
                  cin >> b[k][l];
                  }
            };
      
      cout << endl;
// умножение.
int t=0,z;
int C[j][t];
for (int j=0; j<rd2; j++){
    while (t<st1){
          for (int i=0; i<st1; i++){
              z = a[t][i] * b[i][t] + z;
              }
            C[j][t] = z;
            t++;
            }
            t=0;
      }
      
// вывод результата
i=1;
j=1;
for (int i=1; i<=rd1; i++){
      for (int j=1; j<=st2; j++){
            cout << C[i][j];
            }
      cout << endl;
      }
system("PAUSE");
return 0;
}
- если не трудно, посмотрите в чем может быть ошибка тут. Уже весь день с этой прогой сижу...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.11.2011, 22:39
Ответы с готовыми решениями:

Умножение треугольных матриц«Методы обработки разреженных матриц»
Нужно перемножить треугольные матрицы в обычном виде и в свёрнутом. С обычным проблем нет. Доступ к элементам свёрнутой матрицы...

Умножение матриц
Найти результат умножения матрицы A, размером NA на MA, на матрицу B, размером NB на MB,. Ввод с консоли, на первой строке вводятся целые...

умножение матриц
Даны две целочисленные матрицы размером n x m и m x n. Если в матрице отсутствуют нулевые элементы, то определить произведение этих матриц....

4
Студент
 Аватар для amor1k
148 / 148 / 64
Регистрация: 18.01.2011
Сообщений: 469
18.11.2011, 00:47
C++
1
int a[rd1][st1];
ошибка! так нельзя выделять память под массив.
C++
1
int C[j][t];
не смог понять почему именно такой размер, но все равно не правильно! j, t должны быть константами

C++
1
for (int i=1; i<=rd1; i++)
нумерация в массиве всегда начинается с нуля, и поэтому 'i < rd1'! если только нужно с отдельного элемента.

Добавлено через 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
70
#include <iostream>
#include <conio.h>
using namespace std;
 
 
int main() {
      int i=1,j=1,k=1,l=1;
      int rd1 , st1 , rd2 , st2 ;
      char ch;
      // ввод расширения первой матрицы.
      cout << "Vveditb rozmirnistb pershoi Matruci: ";
      cin >> rd1;
      cin >> st1;
      // ввод расширения 2 матрицы.
      cout << "Vveditb rozmirnistb dryhoi matruci: ";
      cin >> rd2;
      cin >> st2;
      // выход при не соответствии.  
      if (st1 != rd2) {
            cout << "\nMatruc9 ne ob4usljuets9!";
            getch();
            return 0;
      }
      // ввод элементов матриц.
      int **a = new int *[rd1];
      for(int i = 0; i < st1; i++)
          a[i] = new int [st1];
      for (i=0; i<rd1; i++){
            for (j=0; j<st1; j++){
                  cout << "vveditb element a " << i << "_" << j << " = " << endl;
                  cin >> a[i][j];
                  }
            };
      int **b = new int *[rd2];
      for(int i = 0; i < st1; i++)
          a[i] = new int [st2];
      for (k=0; k<rd2; k++){
            for (l=0; l<st2; l++){
                  cout << "vveditb element b " << k << "_" << l << " = " << endl;
                  cin >> b[k][l];
                  }
            };
      
      cout << endl;
// умножение.
int t=0,z;
int C[20][20];
for (int j=0; j<rd2; j++){
    while (t<st1){
          for (int i=0; i<st1; i++){
              z = a[t][i] * b[i][t] + z;
              }
            C[j][t] = z;
            t++;
            }
            t=0;
      }
      
// вывод результата
i=1;
j=1;
for (int i=1; i<=rd1; i++){
      for (int j=1; j<=st2; j++){
            cout << C[i][j];
            }
      cout << endl;
      }
system("PAUSE");
return 0;
}
0
 Аватар для akira_akai
17 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 77
18.11.2011, 00:53  [ТС]
amor1k, - у вас программа с таким кодом нормально все высчитывает? у меня почти тоже самое... буду очень благодарен, если скините экзешник.
0
Студент
 Аватар для amor1k
148 / 148 / 64
Регистрация: 18.01.2011
Сообщений: 469
18.11.2011, 01:02
Умножение матриц
так будет проще вам.
1
 Аватар для akira_akai
17 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 77
18.11.2011, 01:17  [ТС]
Цитата Сообщение от amor1k Посмотреть сообщение
Умножение матриц
так будет проще вам.
- читал уже. но все равно немного не понял...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2011, 01:17
Помогаю со студенческими работами здесь

Умножение матриц
В чем проблема? #include&lt;iostream&gt; #include&lt;iomanip&gt; #include &lt;time.h&gt; using namespace std; char _quit_; int...

Умножение матриц
Вообщем при вводе матриц размером 1х4 или 3х4, получается такое(на картинке), но если вводить матрицы к примеру 4х1 или 4х4, то все окей,...

Умножение матриц
Решенная задача на умножение матриц для сборника. Матрицы вводятся с клавиатуры построчно. #include &lt;iostream&gt; #include...

Умножение матриц
Ребят, помогите реализовать алгоритм умножения матриц. Вот так пытаюсь: int mas; mas = 26; mas = 3; mas = 4; mas = 9; ...

Умножение матриц
Есть 2 функции перемножения квадратных матриц N*N вторая функция транспонирует вторую матрицу для того, чтобы перемножение шло строка на...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru