Dev - C++ - Alguien me podría ayudar con este programa de matrices

 
Vista:

Alguien me podría ayudar con este programa de matrices

Publicado por KENIHER DAVID (1 intervención) el 25/05/2022 17:20:31
Programa que capture 2 matrices n x m (máximo 5 x 5) y las sume si es posible y en caso de no ser posible, halle las traspuestas. Debe imprimir las matrices originales y la(s) respuesta(s). Debe capturar tamaños y datos por cónsola.
Ejecute para las siguientes matrices:
Matriz A (2x3): 3 4 5
5 8 2
Matriz B (3x2): 3 4
5 1
8 2
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Alguien me podría ayudar con este programa de matrices

Publicado por Alfil (1444 intervenciones) el 25/05/2022 20:13:03
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
 
using namespace std;
 
void leer(int **&m, int &fil, int &col);
void sumar(int **a, int afil, int acol, int **b, int bfil, int bcol);
void transpuesta(int **m, int fil, int col);
void imprimir(int **m, int fil, int col);
 
int main()
{
    int **a;
    int **b;
    int afil, acol, bfil, bcol;
 
    cout << endl << "Matriz A: " << endl << endl;
    leer(a, afil, acol);
    cout << endl << "Matriz B: " << endl << endl;
    leer(b, bfil, bcol);
    sumar(a, afil, acol, b, bfil, bcol);
 
    return 0;
}
 
void leer(int **&m, int &fil, int &col)
{
    do {
        cout << "Numero de Filas: "; cin >> fil;
        cout << "Numero de Columnas: "; cin >> col;
 
        if (fil < 0 || fil > 5 || col < 0 || col > 5)
            cout << endl << "NO VALIDO. EXCEDE EL TAMANIO 5x5" << endl << endl;
 
    } while (fil < 0 || fil > 5 || col < 0 || col > 5);
 
    m = new int*[fil];
    for (int i = 0; i < fil; i++)
        m[i] = new int[col];
 
    for (int i = 0; i < fil; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cout << "[" << i << "][" << j << "]: ";
            cin >> m[i][j];
        }
        cout << endl;
    }
}
 
void sumar(int **a, int afil, int acol, int **b, int bfil, int bcol)
{
    cout << endl << "Matriz A: " << endl;
    imprimir(a, afil, acol);
 
    cout << endl << "Matriz B: " << endl;
    imprimir(b, bfil, bcol);
 
    if (afil != bfil || acol != bcol)
    {
        cout << endl << "Las Dimensiones de las Matrices NO Coinciden" << endl << endl;
        cout << endl << "Matriz A Transpuesta: " << endl;
        transpuesta(a, afil, acol);
 
        cout << endl << "Matriz B Transpuesta: " << endl;
        transpuesta(b, bfil, bcol);
        return;
    }
 
    cout << endl << "Suma de A + B: " << endl;
    for (int i = 0; i < afil; i++)
    {
        for (int j = 0; j < acol; j++)
        {
            cout << a[i][j] + b[i][j] << " ";
        }
        cout << endl;
    }
}
 
void transpuesta(int **m, int fil, int col)
{
    int **c = new int*[col];
    for (int i = 0; i < col; i++)
        c[i] = new int[fil];
 
    for (int i = 0; i < fil; i++)
        for (int j = 0; j < col; j++)
            c[j][i] = m[i][j];
 
    imprimir(c, col, fil);
}
 
void imprimir(int **m, int fil, int col)
{
    for (int i = 0; i < fil; i++)
    {
        for (int j = 0; j < col; j++)
        {
            cout << m[i][j] << " ";
        }
        cout << endl;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar