Задача: Умножение матриц. С++

Тема в разделе "C/C++/C#", создана пользователем Fam, 11 ноя 2010.

Статус темы:
Закрыта.
  1. Fam

    Fam Гость

    Напишите функцию, осуществляющую умножение двух квад-ратных матриц.
    Код (Text):
    // matrica: умножение матриц
    int matrica(a[2][2], b][2][2], c[2][2])
    {
    c[1][1]=a[1][1]*b[1][1]+a[1][2]*b[2][1];
    c[1][2]=a[1][1]*b[2][1]+a[1][2]*b[2][2];
    c[2][1]=a[2][1]*b[1][1]+a[2][2]*b[2][1];
    c[2][2]=a[2][1]*b[1][2]+a[2][2]*b[2][2];
    }
    #include<iostream.h>
    #include<math.h>
    #include<conio.h>
    int main()
    {
    int i,j,a[2][2], b[2][2], c[2][2];
    for(i=1;i<=2;i++) {
    for(j=1;j<=2;j++) {
    cout<<"Введите а["<<i<<"]["<<j<<"]";
    cin>>a[i][j];
    cout<<"Введите b["<<i<<"]["<<j<<"]";
    cin>>b[i][j];
    }
    }
    getch();
    return 0;
    }
    Ввод матриц я сделал, умножение тоже, а как вывести матрицк C
     
  2. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    параметры каких типов? и зачем нужен параметр 'n' ?

    Функция matrica откуда-нибудь вызывается?

    Индексация массива размером [2] осуществляется индексами 0 и 1 и все!! А у вас 1 и 2.

    Добавлено:
    Полагаю в конце каждой строки должен стоять символ ';' или ',' (кроме последней строки)

    Добавлено: Блоки циклов почему у вас не закрываются?
    Проверьте синтаксис от и до. Ошибок тьма.
     
  3. Fam

    Fam Гость

    Функция задается мной, а синтаксис поправил.
     
  4. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    У вас же банальные ошибки.
    Теперь сравните со своей. Каждую строку!
    Код (C++):
    #include <iostream.h>
    #include <math.h>
    #include <conio.h>

    void matrica( int (&a)[2][2], int (&b)[2][2], int (&c)[2][2] )
    {
    c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0];
    c[0][1] = a[0][0] * b[1][0] + a[0][1] * b[1][1];
    c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0];
    c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1];
    }

    int main( void )
    {
    int i, j;
    int a[2][2], b[2][2], c[2][2];

    for ( i = 0; i < 2; i++ ) {
    for ( j = 0; j < 2; j++ ) {
    cout << "Введите а["<<i<<"]["<<j<<"]";
    cin >> a[i][j];
    cout << "Введите b["<<i<<"]["<<j<<"]";
    cin >> b[i][j];
    }
    }

    matrica( a, b, c );
    // вывод...

    getch();
    return 0;
    }
    Правильность умножения матриц не проверял.
     
  5. Fam

    Fam Гость

    спасибо, ошибки да, никак от Паскаля не от учусь сначала даже циклы как в паскале писал
     
  6. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Вывод так же как и ввод:
    Код (C++):
    for ( i = 0; i < 2; i++ ) {
    for ( j = 0; j < 2; j++ ) {
    cout << c[i][j] << ' ';
    }
    cout << endl;
    }
     
  7. Fam

    Fam Гость

    ещё перевод строки забыл, чтобы выводил какматрицу
    cout << endl; //перевод строки - все на месте
     
  8. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Кто забыл? Где забыл?
     
  9. Fam

    Fam Гость



    он не будет выводить как матрицу
     
  10. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Он будет выводить так же как ты вводил. Что именно ты имеешь в виду?
     
  11. Fam

    Fam Гость

    Да он будет выводить так, а я имею в виду что то вроде двумерного массива 2*2
     
  12. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Да, мне тоже интересно.
     
  13. Fam

    Fam Гость

    1 2
    3 4


    а он выводит
    1
    2
    3
    4
     
  14. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Ты что-то путаешь. Покажи код который компилируешь.
    Тот код который я писал у меня правильно работает. У меня такое чувство что ты опять там что-то наколдовал.
     
  15. Fam

    Fam Гость

    Возможно путаю
    Код (Text):
    #include <math.h>
    #include <conio.h>

    void matrica( int (&a)[2][2], int (&b)[2][2], int (&c)[2][2] )
    {
    c[0][0] = a[0][0] * b[0][0] + a[0][1] * b[1][0];
    c[0][1] = a[0][0] * b[1][0] + a[0][1] * b[1][1];
    c[1][0] = a[1][0] * b[0][0] + a[1][1] * b[1][0];
    c[1][1] = a[1][0] * b[0][1] + a[1][1] * b[1][1];
    }

    int main( void )
    {
    int i, j;
    int a[2][2], b[2][2], c[2][2];

    for ( i = 0; i < 2; i++ ) {
    for ( j = 0; j < 2; j++ ) {
    cout << "Введите а["<<i<<"]["<<j<<"]";
    cin >> a[i][j];
    cout << "Введите b["<<i<<"]["<<j<<"]";
    cin >> b[i][j];
    }
    }

    matrica( a, b, c );
    for ( i = 0; i < 2; i++ ) {
    for ( j = 0; j < 2; j++ ) {
    cout << c[i][j] << ' ';
    }
    }
    cout << endl;
    getch();
    return 0;
    }
     
  16. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    Ты где внешний цикл закрыл? И я где его закрыл!

    Добавлено:
    Где должно стоять?
     
  17. Fam

    Fam Гость

    я сам нашёл ошибку
    в код полез чтобы добавить вывод матриц а и b тоже и заметил, спасибо парни
     
  18. lazybiz

    lazybiz Well-Known Member
    C\C++ Team

    Регистрация:
    3 ноя 2010
    Сообщения:
    1.344
    Симпатии:
    0
    rrrFer
    Да блин я уже немного нервничать начал))

    Добавлено: Fam
    Да всегда пожалуйста!)
     
Загрузка...
Похожие Темы - Задача Умножение матриц
  1. Янчик
    Ответов:
    0
    Просмотров:
    469
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    776
  3. elzim
    Ответов:
    0
    Просмотров:
    928
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.112
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.101
Статус темы:
Закрыта.

Поделиться этой страницей