March 12.2026

2D Arrays

#include <iostream>

using namespace std;


void inputMatrix(int m[10][10], int r, int c){

    for(int i=0;i<r;i++)

        for(int j=0;j<c;j++)

            cin>>m[i][j];

}


void displayMatrix(int m[10][10], int r, int c){

    for(int i=0;i<r;i++){

        for(int j=0;j<c;j++)

            cout<<m[i][j]<<" ";

        cout<<endl;

    }

}


int sumAll(int m[10][10], int r, int c){

    int s=0;

    for(int i=0;i<r;i++)

        for(int j=0;j<c;j++)

            s+=m[i][j];

    return s;

}


void rowSum(int m[10][10], int r, int c){

    for(int i=0;i<r;i++){

        int s=0;

        for(int j=0;j<c;j++) s+=m[i][j];

        cout<<"Row "<<i<<":"<<s<<endl;

    }

}


void addMatrix(){

    int r,c;

    int a[10][10], b[10][10];

    cin>>r>>c;


    inputMatrix(a,r,c);

    inputMatrix(b,r,c);


    for(int i=0;i<r;i++){

        for(int j=0;j<c;j++)

            cout<<a[i][j]+b[i][j]<<" ";

        cout<<endl;

    }

}


void spiral(int m[10][10], int r, int c){

    int top=0,bot=r-1,left=0,right=c-1;


    while(top<=bot && left<=right){

        for(int i=left;i<=right;i++) cout<<m[top][i]<<" ";

        top++;


        for(int i=top;i<=bot;i++) cout<<m[i][right]<<" ";

        right--;


        if(top<=bot){

            for(int i=right;i>=left;i--) cout<<m[bot][i]<<" ";

            bot--;

        }


        if(left<=right){

            for(int i=bot;i>=top;i--) cout<<m[i][left]<<" ";

            left++;

        }

    }

    cout<<endl;

}


void beginnerMenu(){

    int ch;

    int m[10][10];

    do{

        cout<<"\nBeginner\n1.Input & Display\n2.Sum\n0.Back\n";

        cin>>ch;

        if(ch==1||ch==2) inputMatrix(m,3,3);


        switch(ch){

            case 1: displayMatrix(m,3,3); break;

            case 2: cout<<sumAll(m,3,3)<<endl; break;

        }

    }while(ch!=0);

}


void intermediateMenu(){

    int ch;

    int m[10][10];

    do{

        cout<<"\nIntermediate\n1.Row Sum\n0.Back\n";

        cin>>ch;

        if(ch==1) inputMatrix(m,3,3);


        switch(ch){

            case 1: rowSum(m,3,3); break;

        }

    }while(ch!=0);

}


void advancedMenu(){

    int ch;

    do{

        cout<<"\nAdvanced\n1.Matrix Addition\n0.Back\n";

        cin>>ch;


        switch(ch){

            case 1: addMatrix(); break;

        }

    }while(ch!=0);

}


void challengeMenu(){

    int ch;

    int m[10][10];

    do{

        cout<<"\nChallenge\n1.Spiral Print\n0.Back\n";

        cin>>ch;

        if(ch==1) inputMatrix(m,3,3);


        switch(ch){

            case 1: spiral(m,3,3); break;

        }

    }while(ch!=0);

}


int main(){

    int ch;

    do{

        cout<<"\nMAIN MENU\n1.Beginner\n2.Intermediate\n3.Advanced\n4.Challenge\n0.Exit\n";

        cin>>ch;


        switch(ch){

            case 1: beginnerMenu(); break;

            case 2: intermediateMenu(); break;

            case 3: advancedMenu(); break;

            case 4: challengeMenu(); break;

        }

    }while(ch!=0);


    return 0;

}