Operations with 2D arrays

I got a little problem. Its not a school assignment I am trying to wrap up an online tutorial assignment on 2D arrays. Every time when I compile my code it just displays the Menu and then "RUN FAILED". Can someone tell me whats wrong with my code? the assignment is down below.

Write a menu driven C++ program to do following operation on two dimensional array A of size m x n. You should use user-defined functions which accept 2-D array A, and its size m and n as arguments. The options are:

To input elements into matrix of size m x n
To display elements of matrix of size m x n
Sum of all elements of matrix of size m x n
To display row-wise sum of matrix of size m x n
To display column-wise sum of matrix of size m x n
To create transpose of matrix B of size n x n

here is my code.
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include<iostream>

using namespace std;

void input_element(int A[][20],int m, int n);

void display_matrix(int A[][20], int m, int n);

int sum(int A[][20], int m, int n);

int row_sum(int A[][20], int m, int n);

int col_sum(int A[][20], int m, int n);

void transp(int A[][20],int B[][20], int m, int n);

int main()
{
    int a,b,choice, A[10][20],n,x,y,z;
    
    do
    {
        
        cout <<"*******Matrix program*******" << endl;
        cout <<"Menu" << endl;
        cout <<"1. input elements" << endl;
        cout <<"2. Display matrix" << endl;
        cout <<"3. Sum of matrix elements" << endl;
        cout <<"4. Sum of matrix rows" << endl;
        cout <<"5. Sum of matrix elements" << endl;
        cout <<"6. Exit"<< endl;
        cout <<"Choose among the options above: ";
        cin  >> choice;
         
        x = sum(A,a,b);
        y = row_sum(A,a,b);
        z = col_sum(A,a,b);
        
        switch(choice)
        {
                case 1: input_element(A,a,b); break;
                
                case 2: display_matrix(A,a,b); break;
                
                case 3: cout <<"The sum of the matrix elements is " << x << endl;
                break;
                
                case 4: cout <<"The sum of the matrix rows is "<< y << endl;
                break;
                
                case 5: cout <<"The sum of the matrix columns is "<< z << endl;
                break;
                
                default: cout <<"Your choice is invalid" << endl;
        }
        
        }while(choice != 6);
        
        cin.ignore();
        cin.get();
        
        return 0;

}

void input_element(int A[][20], int m, int n)
{
    int row, col;
    cout <<"Enter the number of rows: ";
    cin  >> row;
    
    cout <<"Enter the number of columns: ";
    cin  >> col;
}

void display_matrix(int A[][20], int m, int n)
{
    
    for(int r = 0; r < m; r++)
        for(int colum = 0; colum < n; colum++)
        {
            cout <<"Enter element "<<": ";
            cin >> A[r][colum];
        }
}

int sum(int A[][20], int m, int n)
{
    int s = 0,r,colum;
    for( r = 0; r < m; r++)
    {
        for(colum = 0; colum < n; colum++)
        {
            s += A[r][colum];
        }
    }
    return s;
}

int row_sum(int A[][20], int m, int n)
{
    int r_s = 0,r,colum;
    for(r = 0; r < m; r++)
    {
        for(colum = 0; colum < n; colum++)
        {
            r_s += A[r][colum]; 
        }
    }
    return r_s;
}

int col_sum(int A[][20], int m, int n)
{
    int col_s(0),colum,r;
    for(r = 0; r < m; r++)
    {
        for(colum = 0; colum < n; colum++)
        {
            col_s += A[r][colum]; 
        }
    }
    return col_s;
}

void transp(int A[][20], int B[][20], int m, int n)
{
    int r,colum;
    for(r = 0; r < m; r++)
    {
        for(colum = 0;  colum < n; colum++)
            B[r][colum] = A[colum][r];
    }
    
}
I am pretty sure that m and n are given as input from the user, I don't think you can just arbitrarily choose 10 and 20 at your leisure.
alright. so I just ask the user to input m and n?
Not only that, you need to redesign a lot of your code as most of your code assumes 10 by 20 instead of m by n.
Can someone tell me how to pass a 2d array as an argument into a function? when I write for instance int sum(int m, int n, int A[][]) I get a shit ton of errors like a 2d array needs bounds except for the first dimension stuff like that.
If you defined the array as

int A[10][20],

then the following function declaration

void input_element(int A[][20], int m );

is valid. There is enough to declare a parameter that specifies the number of rows because the number of columns is known and equal to 20.

If you are trying to dynamically allocate an array as for example

int **A = new int *[m];
for ( int i = 0; i < m; i++ ) A[i] = new int[n];

then the function should be declared as

void input_element(int **A, int m, int n );

Topic archived. No new replies allowed.