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

Ошибка вывода при перемножении матриц - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Организовать производный класс, содержащий функции вычисления деления и умножения дробей, функцию приведения дроби к несократимому виду http://www.cyberforum.ru/cpp-beginners/thread883352.html
Организовать производный класс, содержащий функции вычисления деления и умножения дробей, функцию приведения дроби к несократимому виду. Очень прошу помогите кто знает! Заранее огромное спасибо! ...
C++ среднее массива Задание 2 во вложении. Вторая фотка это пример но считает ма уникальное. Плз на контроььной сижу http://www.cyberforum.ru/cpp-beginners/thread883338.html
Работа с числовыми файлами C++
Нужно создать программу по главному меню, помогите пожалуйста. Точками обозначены пункты подменю, а цифрами пункты самого меню. Тема - Работа с числовыми файлами. Главное меню программы: ...
C++ Есть программа на паскале, нужно на Си
привет всем! Я недавно начало писать на Cи, и не знаю как решить эту задачку. точнее не знаю как написать её именно на Cи, на Паскале написала вроде работает а вот на Си никак не получается. Помогите...
C++ Где ошибка? (Дан текст введенный заглавными русскими буквами, определить в процентах сколько раз встречается та или иная буква) http://www.cyberforum.ru/cpp-beginners/thread883304.html
Дан текст введенный заглавными русскими буквами, определить в процентах сколько раз встречается та или иная буква! # include <stdio.h> # include <windows.h> # include <string.h> void main() ...
C++ программа, ограничивающая доступ к жесткому диску как должна выглядеть программа, ограничивающая доступ к жесткому диску? На Си или с++. знает кто нибудь? подробнее

Показать сообщение отдельно
Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
29.05.2013, 13:57
Похоже, тут выход за пределы массива:
C++
1
2
for (int k = 0; k < row; k++)
               c[i][j] += a[i][k] * b[k][j];
массив "a" имеет всего 3 столбца (0 - 2), а row = 5. Когда k принимает значение k > 2, a[i][k] лежит за пределами массива.

Добавлено через 1 час 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
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int row = 5, col = 3;
    int matrix1[row][col];
    int matrix2[col][row];
    int matrix3[row][row] = {0};
 
    for (int i = 0; i < row; i++)
        for (int j = 0; j < col; j++)
            matrix1[i][j] = 1 + rand() % 10;
 
    for (int i = 0; i < col; i++)
        for (int j = 0; j < row; j++)
            matrix2[i][j] = 1 + rand() % 10;
 
    cout << "Матрица 1:" << endl;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col; j++)
            cout << setw(3) << matrix1[i][j];
        cout << endl;
    }       
 
    cout << endl << endl <<"Матрица 2:" << endl;
    for (int i = 0; i < col; i++)
    {
        for (int j = 0; j < row; j++)
            cout << setw(3) << matrix2[i][j];
        cout << endl;
    }
 
    cout << endl << endl <<"Матрица 3:" << endl;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < row; j++)
            cout << setw(3) << matrix3[i][j];
        cout << endl;
    }
 
    for (int i = 0; i < row; i++)
        for (int j = 0; j < row; j++)
            for (int k = 0; k < col; k++)
                matrix3[i][j] += matrix1[i][k] * matrix2[k][j];
 
    cout << endl << endl <<"Матрица 3:" << endl;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < row; j++)
            cout << setw(5) << matrix3[i][j];
        cout << endl;
    }
    system("pause");
    return 0;
}
При изменении цикла в Вашем коде у меня вылетает ошибка:
Run-Time Check Failure #2 - Stack around the variable 'b' was corrupted.
. Причину так и не выяснил
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru