Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 15.11.2017
Сообщений: 9
1

Не правильно происходит умножение матриц

13.12.2017, 07:55. Показов 522. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
 
int main()
 
{
    int N,M,F,D,i,j,k; // N строки матрицы1 M столбцы матрицы2, F строки матрицы2 D столбцы матрицы2
    N = 10;
    int **A = (int**)malloc(N * sizeof(int*));
    int **B = (int**)malloc(N * sizeof(int*));
    int **C = (int**)malloc(N * sizeof(int*));
    for (i = 0; i < N; i++)
    {
        A[i] = (int*)malloc(N * sizeof(int));
        B[i] = (int*)malloc(N * sizeof(int));
        C[i] = (int*)malloc(N * sizeof(int));
    }
    printf(" Vvedite koli4 strok m1 :");
    scanf("%d", &N);
    printf(" vvedite kol4 stolb m1 :");
    scanf("%d", &M);
    printf(" Zapolnite m1: ");
    for (i = 0; i < N; i++)
        for(j = 0; j < M; j++)
        {
        scanf("%d", &A[i][j]);
        }
    printf(" Vvedite kol4 strok m2 : ");
    scanf("%d", &F);
    printf(" Vvedite kol4 stolb m2 : ");
    scanf("%d", &D);
    if (M != F)
        printf(" eti matricy nevoz peremnozhit");
    else
    {
    printf(" Zapolnite m2 :");
    for (i = 0; i < F; i++)
        for(j = 0; j < D; j++)
        {
        scanf("%d", &B[i][j]);
        }
    for(i = 0; i < N; i++)
        for(j = 0; j < M; j++)
        {
        C[i][j] = 0;
            for (k = 0; k < D; k++)
                C[i][j] += A[i][k] * B[k][j];
        }
 
    printf("\n Vid matricy m1 \n");
    for (i = 0; i < N; i++)
    {
        for(j = 0; j < M; j++)
        printf("%d", A[i][j]);
        printf("\n");
    }
    printf("\n Vid matricy m2 \n");
    for (i = 0; i < F; i++)
    {
        for (j=0; j < D; j++)
        printf("%d", B[i][j]);
        printf("\n");
    }
    printf("\n pri umnozenii polu4aem %dx%d\n",N,D);
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < D; j++)
        printf("%d", C[i][j]);
        printf("\n");
    }
 
    getchar();
    return 0;
    }
}
Проблема такая, вы вводе строк и столбцов для матрицы1 или вводе строк и столбоц матрицы2, не всегда правильно отображает саму матрицу, например
строки для первой матрицы : 1
столбцы для первой матрицы : 3
матрица1: -59 78 -85
строки для второй матрицы : 3
столбцы для второй матрицы : 1
матрица2: 78
-28
-97
Результат выводит
При умножении 1х1
-4602

Тогда как при правильной работе должен вывести :
При умножении 1х1
1459
Объясните пожалуйста, не получается понять никак... и ещё,
Последняя просьба, как сделать так, чтобы ввести знак *(умножение) между первой и второй матрицей, чтобы выглядело примерно так
строки м1: х
столбцы м1 : у
матрица1 : х у р
*
строки м2: х
столбцы м2: у
матрица2 : а ы в

Надеюсь, все понятно изложил) спасибо большое за помощь)

Добавлено через 24 минуты
И ещё проблема, он почему-то не правильно выписывает вид матриц.
пишет матрицу (2,3) в таком виде:
123
456
почему-то не пишет выводит на экран проблелы между числами. Не понимаю!!))
спасибо ещё раз!

Добавлено через 17 минут
Разобрался с пробелами между цифрами)
только теперь все равно он как-то странно умножает сами матрицы... ответ не тот, который нужен получается
и вопрос с действием между матрицами остается не разгаданным для меня)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2017, 07:55
Ответы с готовыми решениями:

Умножение матриц (не работает для неквадратных матриц)
Доброго времени суток. Написал код для перемножения двух матриц. При вводе квадратной матрицы всё...

Происходит непонятное умножение на 2
Посмотрите Тест, ввожу одно, а считает другое. Ввожу 4,5,6 , а умножает 4*5*2. #include...

Умножение матриц Си
моя програма считает умножение двух матриц. Вводим одно Число(оно же будет размером двух матриц),...

Умножение матриц по Винограду
Для вариантов, предусматривающих решение систем линейных уравнений, умножение матриц и вычисление...

4
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
13.12.2017, 11:16 2
Неправильно записано умножение матриц по правилу "строка-столбец". Должно быть так:
C
1
2
3
4
5
6
7
    for(i = 0; i < N; i++)
        for(j = 0; j < D; j++)
        {
        C[i][j] = 0;
            for (k = 0; k < F; k++)
                C[i][j] += A[i][k] * B[k][j];
        }
1
1 / 1 / 0
Регистрация: 15.11.2017
Сообщений: 9
13.12.2017, 11:27  [ТС] 3
спасибо большое) теперь считает все правильно)
а можешь ещё подсказать, если не сложно, как вписать между двумя матрицами какое-либо математическое действие, чтобы знак (*,+,-) был между первой и второй матрицей?
0
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
13.12.2017, 11:36 4
C
1
puts("*");
Но матрицы будут друг под другом.
0
1 / 1 / 0
Регистрация: 15.11.2017
Сообщений: 9
13.12.2017, 11:45  [ТС] 5
аха, понял) спасибо) не совсем, то что нужно) но все же, спасибо, с умножением теперь проблем нет)
0
13.12.2017, 11:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2017, 11:45
Помогаю со студенческими работами здесь

Умножение квадратных матриц
Доброго времени суток. Я опять прошу Вашей неоценимой помощи. Столкнулся с задачей, нужно...

Параллельное умножение матриц
Всем привет, помогите написать программу) нужно написать программу Параллельное умножение матриц,...

Умножение матриц большого размера
Как объявить матрицу из целых чисел размера NxN если это N &lt;=1024? Нужно написать умножение матриц...

Умножение матриц произвольного размера
Доброго времени суток.Нужно написать вот это Написать функцию для умножения матриц произвольного...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru