Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/2: Рейтинг темы: голосов - 2, средняя оценка - 4.50
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
1

Ошибка при перемножении матриц

21.09.2013, 23:22. Просмотров 473. Ответов 4
Метки нет (Все метки)

Здравствуйте.
При перемножении двух матриц, появляется лишний столбец. Никак не могу найти ошибку.
Вот фрагмент кода:
Есть три массива: A[m][n], B[n][k], C[m][k]
C
1
2
3
4
5
6
for(i=0;i<m;i++){
        for(j=0;j<k;j++){
            for(s=0;s<n;s++){
                С[i][j]=С[i][j]+(A[i][s]*B[s][j]);
            }
        }
Вот допустим ввожу: A[3][3], B[3][2]. Должна появиться матрица C[3][2].
0
Миниатюры
Ошибка при перемножении матриц  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2013, 23:22
Ответы с готовыми решениями:

Ошибка при перемножении квадратных матриц
Написал такую прогу. По выбору складывает, вычитает, или умножает матрицы. При перемножении (конец...

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

Ошибка вывода при перемножении матриц
Здравствуйте! Программирую на C++ совсем недавно, столкнулся с проблемой, при выводе матрицы....

Ошибка в перемножении матриц
Имеется программка для перемножения матриц. void matrix_iter(double **mas_e, double **mas1,...

4
Заблокирован
22.09.2013, 05:00 2
Нужно увидеть весь код, чтобы понять, что там происходит.
0
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
22.09.2013, 13:31  [ТС] 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
printf("Ïðîèçâåäåíèå äâîõ ìàòðèö.\n");
    int i,j,m,n,k,s;
    do{
        printf("Êîëè÷åñòâî ñòðîê ïåðâîé ìàòðèöû : ");
        scanf("%i",&m);
        if(m<0){
            printf("Îøèáêà! Êîëè÷åñòâî ýëåìåíòîâ äîëæíî áûòü áîëüøå èëè ðàâíî 0 !\n");
        }
    } while (m<0);
    do{
        printf("Êîëè÷åñòâî ñòîëáöîâ ïåðâîé è ñòðîê âòîðîé ìàòðèöû: ");
        scanf("%i",&n);
        if(n<0){
            printf("Îøèáêà! Êîëè÷åñòâî ýëåìåíòîâ äîëæíî áûòü áîëüøå èëè ðàâíî 0 !\n");
        }
    } while (n<0);
    do{
        printf("Êîëè÷åñòâî ñòîëáöîâ âòîðîé ìàòðèöû: ");
        scanf("%i",&k);
        if(i<0){
            printf("Îøèáêà! Êîëè÷åñòâî ýëåìåíòîâ äîëæíî áûòü áîëüøå èëè ðàâíî 0 !\n");
        }
    } while (i<0);
    int A[m][n],B[n][k],dobutok[m][k];
    srand( time( NULL ) );
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            A[i][j]= rand()%10;
        }
    }
    for(i=0;i<n;i++){
        for(j=0;j<k;j++){
            B[i][j]= rand()%10;
        }
    }
    for (i=0;i<m;i++){
        for (j=0;j<k;j++){
            dobutok[i][j]=0;
        }
    }
    printf("Íà÷ëüíûé âèä îáåèõ ìàòðèö:\n");
    for(i=0; i<m; i++) 
    {
        for(j=0; j<n; j++)
        {
            printf("%d\t", A[i][j]);
        }
        printf("\n");   
    }
    printf("\n\t*\n\n");
    for(i=0; i<n; i++) 
    {
        for(j=0; j<k; j++)
        {
            printf("%d\t", B[i][j]);
        }
        printf("\n");   
    }
    printf("Îòâåò:\n");
    for(i=0;i<m;i++){
        for(j=0;j<k;j++){
            for(s=0;s<n-1;s++){
                dobutok[i][j]=dobutok[i][j]+(A[i][s]*B[s][j]);//??????? ???? ???????
            }
        }
    }
    for (i=0; i<m; i++){
        for (j=0; j<n; j++){
            printf("%d\t", dobutok[i][j]);
        }
        printf("\n");
    }
0
Модератор
26225 / 13644 / 2589
Регистрация: 12.02.2012
Сообщений: 22,370
22.09.2013, 13:35 4
К первому коду только одна претензия: С[i][j] необходимо обнулить
0
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
22.09.2013, 16:28  [ТС] 5
это не помогает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2013, 16:28

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Мусор при перемножении матриц
3дравствуйте, ошибка возникает,когда перемножаю матрицы a3;b3 и a2;b2; Они перемножаются, но там...

Свойство ассоциативности при перемножении матриц
Народ. Не могу понять одну вещь. Я сейчас с координатными преобразованиями завис, причём с...

Программа, которая оптимальным образом расставляет скобки при перемножении матриц
Пожалуйста помогите написать программу, которая оптимальным образом расставляет скобки при...

Ошибка при перемножении численной матрицы на символьную
Здравствуйте. У меня возникает ошибка при перемножении матриц 3х3 на 3х1 &quot;Возвращаемый символьный...

Задача об эффективном перемножении матриц
Помогите разобраться с алгоритмом об эффективном перемножении матриц(расстановка скобок). Я понял...

Переполнение при перемножении чисел типа Variant
Вот так работает: Dim TotF As Long TotF = 15000000 А вот так выдаёт &quot;переполнение&quot;: Dim TotF...


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

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

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