Operaciones con matrices en C++

C++Beginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá a realizar diversas operaciones con matrices, como la adición, la sustracción y la multiplicación, en una matriz bidimensional dada utilizando el lenguaje de programación C++. También aprenderá a manipular y utilizar matrices de manera efectiva.

Creando el archivo de programa C++

Cree un nuevo archivo llamado matrix_operations.cpp en el directorio ~/project. Esto se puede hacer utilizando el siguiente comando en la terminal.

touch ~/project/matrix_operations.cpp

Incluyendo las bibliotecas necesarias y configurando la función principal

El primer paso en nuestro programa C++ es incluir las bibliotecas necesarias para las operaciones de entrada/salida y limpiar la consola. Después de eso, configure la función principal de su programa C++. Puede usar el siguiente código como plantilla.

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

int main()
{
    clrscr();
    // Su código aquí
    getch();
    return 0;
}

Suma de dos matrices

En este paso, crearemos un caso para realizar la suma de dos matrices. El programa en C++ pedirá al usuario que ingrese el orden o dimensiones de las dos matrices (debe ser m*n y o*p).

Si las dimensiones de las matrices no son las mismas, el programa devolverá un mensaje de error. Luego, ingrese los elementos de las matrices y súmelos. El código final debería verse como el siguiente.

//SUMA
caso 1:
    cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Suma posible "<<endl;
    }
    else
    {
        cout<<"Suma no posible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elementos de la matriz 1 son: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elementos de la matriz 2 son: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nSuma:\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;

Resta de dos matrices

En este paso, crearemos un caso para realizar la resta de dos matrices. El programa en C++ pedirá al usuario que ingrese el orden o dimensiones de las dos matrices (debe ser m*n y o*p).

Si las dimensiones de las matrices no son las mismas, el programa devolverá un mensaje de error. Luego, ingrese los elementos de las matrices y reste las matrices. El código final debería verse como el siguiente.

//RESTA
caso 2:
    cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (m==o&&n==p)
    {
        cout<<"Resta posible "<<endl;
    }
    else
    {
        cout<<"Resta no posible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elementos de la matriz 1 son: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elementos de la matriz 2 son: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nResta:\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;

Multiplicación de dos matrices

En este paso, crearemos un caso para realizar la multiplicación de dos matrices. El programa en C++ pedirá al usuario que ingrese el orden o dimensiones de las dos matrices (debe ser m*n y o*p).

Si las dimensiones de las matrices no son compatibles, el programa devolverá un mensaje de error. Luego, ingrese los elementos de las matrices y multiplíquelos. El código final debería verse como el siguiente.

//MULTIPLICACIÓN
caso 3:
    cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
    cin>>m;
    cout<<"* \n";
    cin>>n;
    cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
    cin>>o;
    cout<<"* \n";
    cin>>p;
    if (n==o)
    {
        cout<<"Multiplicación posible "<<endl;
    }
    else
    {
        cout<<"Multiplicación no posible ";
        l=0;
    }

    if(l)
    {
        cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
        for (i=1;i<=m;i++)
        {
            for (j=1;j<=n;j++)
                cin>>a[i][j];
        }
        cout<<"Elementos de la matriz 1 son: ";
        for (i=1;i<=m;i++)
        {
            cout<<endl;
            for (j=1;j<=n;j++)
                cout<<a[i][j]<<" ";
        }
        cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
        for (i=1;i<=o;i++)
        {
            for (j=1;j<=p;j++)
                cin>>b[i][j];
        }
        cout<<"Elementos de la matriz 2 son: ";
        for (i=1;i<=o;i++)
        {
            cout<<endl;
            for (j=1;j<=p;j++)
                cout<<b[i][j]<<" ";
        }
        cout<<"\n\n\nMultiplicación:\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;

Ejecutando el programa C++

Puede ejecutar el archivo matrix_operations.cpp compilándolo con el siguiente comando en la terminal:

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

Es posible que tenga que reemplazar matrix_operations.cpp con el nombre que haya usado para su archivo de programa C++.

Asumiendo que su código está dando la salida esperada, debería poder ver un mensaje que le pide un número de caso (1 para Suma, 2 para Resta y 3 para Multiplicación). Después de ingresar su elección, el programa le pedirá que ingrese matrices según la operación elegida.

Código completo del programa C++

A continuación se presenta el código completo para nuestro archivo 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<<"Ingrese el caso:\n";
    cin>>r;
    switch(r)
    {
        //SUMA
        caso 1:
            cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Suma posible "<<endl;
            }
            else
            {
                cout<<"Suma no posible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elementos de la matriz 1 son: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elementos de la matriz 2 son: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nSuma:\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;

        //RESTA
        caso 2:
            cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (m==o&&n==p)
            {
                cout<<"Resta posible "<<endl;
            }
            else
            {
                cout<<"Resta no posible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elementos de la matriz 1 son: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elementos de la matriz 2 son: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nResta:\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;

        //MULTIPLICACIÓN
        caso 3:
            cout<<"\nIngrese el orden de la matriz a (debe ser m*n): "<<endl;
            cin>>m;
            cout<<"*\n";
            cin>>n;
            cout<<"Ingrese el orden de la matriz b (debe ser o*p): "<<endl;
            cin>>o;
            cout<<"*\n";
            cin>>p;
            if (n==o)
            {
                cout<<"Multiplicación posible "<<endl;
            }
            else
            {
                cout<<"Multiplicación no posible ";
                l=0;
            }

            if(l)
            {
                cout<<"\n\nIngrese los elementos de la matriz 1: "<<endl;
                for (i=1;i<=m;i++)
                {
                    for (j=1;j<=n;j++)
                        cin>>a[i][j];
                }
                cout<<"Elementos de la matriz 1 son: ";
                for (i=1;i<=m;i++)
                {
                    cout<<endl;
                    for (j=1;j<=n;j++)
                        cout<<a[i][j]<<" ";
                }
                cout<<"\nIngrese los elementos de la matriz 2: "<<endl;
                for (i=1;i<=o;i++)
                {
                    for (j=1;j<=p;j++)
                        cin>>b[i][j];
                }
                cout<<"Elementos de la matriz 2 son: ";
                for (i=1;i<=o;i++)
                {
                    cout<<endl;
                    for (j=1;j<=p;j++)
                        cout<<b[i][j]<<" ";
                }
                cout<<"\n\n\nMultiplicación:\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;
        // caso predeterminado
        default:
            cout<<"Elección incorrecta";
    }
    getch();
    return 0;
}

Resumen

En este laboratorio, has aprendido cómo realizar diversas operaciones con matrices en una matriz bidimensional dada utilizando la programación en C++. También has aprendido cómo manipular y utilizar matrices. Ahora deberías tener una buena comprensión de cómo funcionan las matrices en la programación en C++.