Operações com Matrizes em C++

C++Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como realizar várias operações de matrizes (Matrix operations), como Adição, Subtração e Multiplicação, em um array 2-D (2-Dimensional Array) fornecido usando a linguagem de programação C++. Você também aprenderá como manipular e usar arrays de forma eficaz.

Criando o Arquivo do Programa C++

Crie um novo arquivo chamado matrix_operations.cpp no diretório ~/project. Isso pode ser feito usando o seguinte comando no terminal.

touch ~/project/matrix_operations.cpp

Incluindo as Bibliotecas Necessárias e Definindo a Função Principal

O primeiro passo em nosso programa C++ é incluir as bibliotecas necessárias para operações de Entrada/Saída (Input/Output) e para limpar o console. Depois disso, configure a função principal para o seu programa C++. Você pode usar o seguinte código como um modelo.

#include<iostream.h>
#include<conio.h>

int main()
{
    clrscr();
    // Your code here
    getch();
    return 0;
}

Adição de 2 Matrizes

Nesta etapa, criaremos um caso para realizar a Adição de 2 Matrizes. O programa C++ pedirá ao usuário para inserir a ordem ou as dimensões das duas matrizes (devem ser m*n e o*p).

Se as dimensões das matrizes não forem as mesmas, o programa retornará uma mensagem de erro. Em seguida, insere os elementos das matrizes e os soma. O código final deve ser semelhante ao seguinte.

//ADDITION
case 1:
    cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Enter the order of matrix b (must be o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Addition possible "<<endl;
    }
    else
    {
        cout<<"Addition not possible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nEnter the elements of matrix 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elements of matrix 1 are: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nEnter the elements of matrix 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elements of matrix 2 are: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nAddition:\nc=a+b=";
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
            {
                c[i][j]=a[i][j]+b[i][j];
            }
        }
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<c[i][j]<<" ";
        }
    }
    break;

Subtração de 2 Matrizes

Nesta etapa, criaremos um caso para realizar a Subtração de 2 Matrizes. O programa C++ pedirá ao usuário para inserir a ordem ou as dimensões das duas matrizes (devem ser m*n e o*p).

Se as dimensões das matrizes não forem as mesmas, o programa retornará uma mensagem de erro. Em seguida, insere os elementos das matrizes e os subtrai. O código final deve ser semelhante ao seguinte.

//SUBTRACTION
case 2:
    cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Enter the order of matrix b (must be o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Subtracion possible "<<endl;
    }
    else
    {
        cout<<"Subtraction not possible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nEnter the elements of matrix 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elements of matrix 1 are: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nEnter the elements of matrix 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elements of matrix 2 are: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nSubtraction:\nc=a-b=";
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
            {
                c[i][j]=a[i][j]-b[i][j];
            }
        }
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<c[i][j]<<" ";
        }
    }
    break;

Multiplicação de 2 Matrizes

Nesta etapa, criaremos um caso para realizar a Multiplicação de 2 Matrizes. O programa C++ pedirá ao usuário para inserir a ordem ou as dimensões das duas matrizes (devem ser m*n e o*p).

Se as dimensões das matrizes não forem compatíveis, o programa retornará uma mensagem de erro. Em seguida, insere os elementos das matrizes e os multiplica. O código final deve ser semelhante ao seguinte.

//MULTIPLICATION
case 3:
    cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Enter the order of matrix b (must be o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (n==o)
    {
        cout<<"Multiplication possible "<<endl;
    }
    else
    {
        cout<<"Multiplication not possible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nEnter the elements of matrix 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elements of matrix 1 are: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nEnter the elements of matrix 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elements of matrix 2 are: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nMultiplication:\nc=aXb=";
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=p;j++)
            {
                c[i][j]=0;
                for (int k=1;k<=n;k++)
                {
                    c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
                }
            }
        }
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<c[i][j]<<" ";
        }
    }
    break;

Executando o Programa C++

Você pode executar o arquivo matrix_operations.cpp compilando-o com o seguinte comando no terminal:

g++ ~/project/matrix_operations.cpp -o matrix && ./matrix

Talvez seja necessário substituir matrix_operations.cpp pelo nome que você usou para o seu arquivo de programa C++.

Supondo que seu código esteja fornecendo a saída esperada, você deverá ver um prompt solicitando um número de caso (1 para Adição, 2 para Subtração e 3 para Multiplicação). Depois de inserir sua escolha, o programa pedirá que você insira as matrizes com base na operação escolhida.

Código Completo do Programa C++

Aqui está o código completo para o nosso arquivo de programa matrix_operations.cpp.

#include<iostream.h>
#include<conio.h>

int main()
{
    clrscr();
    int a[50][50],b[50][50],c[50][50],i,j,m,n,o,p,l=1,r;
    cout<<"Enter case:\n";
    cin>>r;
    switch(r)
    {
        //ADDITION
        case 1:
            cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Enter the order of matrix b (must be o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Addition possible "<<endl;
            }
            else
            {
                cout<<"Addition not possible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nEnter the elements of matrix 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elements of matrix 1 are: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nEnter the elements of matrix 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elements of matrix 2 are: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nAddition:\nc=a+b=";
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                    {
                        c[i][j]=a[i][j]+b[i][j];
                    }
                }
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<c[i][j]<<" ";
                }
            }
            break;

        //SUBTRACTION
        case 2:
            cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Enter the order of matrix b (must be o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Subtracion possible "<<endl;
            }
            else
            {
                cout<<"Subtraction not possible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nEnter the elements of matrix 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elements of matrix 1 are: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nEnter the elements of matrix 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elements of matrix 2 are: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nSubtraction:\nc=a-b=";
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                    {
                        c[i][j]=a[i][j]-b[i][j];
                    }
                }
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<c[i][j]<<" ";
                }
            }
            break;

        //MULTIPLICATION
        case 3:
            cout<<"\nEnter the order of matrix a (must be m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Enter the order of matrix b (must be o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (n==o)
            {
                cout<<"Multiplication possible "<<endl;
            }
            else
            {
                cout<<"Multiplication not possible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nEnter the elements of matrix 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elements of matrix 1 are: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nEnter the elements of matrix 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elements of matrix 2 are: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nMultiplication:\nc=aXb=";
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=p;j++)
                    {
                        c[i][j]=0;
                        for (int k=1;k<=n;k++)
                        {
                            c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
                        }
                    }
                }
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<c[i][j]<<" ";
                }
            }
            break;
        // default case
        default:
            cout<<"Wrong choice";
    }
    getch();
    return 0;
}

Resumo

Neste laboratório, você aprendeu como realizar várias operações de matriz em um Array 2-D (matriz bidimensional) fornecido usando a linguagem de programação C++. Você também aprendeu como manipular e usar arrays. Agora você deve ter uma boa compreensão de como as Matrizes funcionam na programação C++.