Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,971 questions

51,913 answers

573 users

How to find the sum of boundaries and diagonals of a matrix in C

2 Answers

0 votes
#include <stdio.h>    

#define COLS 5

int sumDiagonalsAndBoundaries(int matrix[][COLS], int rows, int cols) {
    int sumBoundaries = 0, sumDiagonals = 0;

    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < COLS; j++) {
            if (i == j) {
                sumDiagonals += matrix[i][j];
            }
            if ((i + j) == rows - 1) {
                sumDiagonals += matrix[i][j];
            }
            if (i == 0 || j == 0 || i == rows - 1 || j == cols - 1) {
                sumBoundaries += matrix[i][j];
            }
        }
    }

    printf("sumBoundaries = %d\nsumDiagonals = %d\n", sumBoundaries, sumDiagonals);

    return sumBoundaries + sumDiagonals;
}


int main()
{
    int matrix[][COLS] = { { 1,   2,   3,   4,  0 },
                           { 5,   6, 100,   8,  1 },
                           { 2, 100,   8, 100,  3 },
                           { 1,   7, 100,   9,  6 },
                           { 9,  10,  11,  12, 13 } };

    // sumBoundaries = (1 + 2 + 3 + 4 + 0) = 10 + (1 + 3 + 6 + 13)  = 23 + 
    //                 (12 + 11 + 10 + 9) = 42 + (1 + 2 + 5) = 9 : 10 + 23 + 42 + 8 = 83
    
    // sumDiagonals = (1 + 6 + 8 + 9 + 13) = 37 + (0 + 8 + 8 + 7 + 9) = 32 : 37 + 32 = 69

    // 83 + 69 = 152

    int rows = sizeof matrix / sizeof matrix[0];
    int cols = sizeof matrix[0] / sizeof(int);

    printf("%d", sumDiagonalsAndBoundaries(matrix, rows, cols));

    return 0;
}



/*
run:

sumBoundaries = 83
sumDiagonals = 69
152

*/

 



answered Jun 18, 2023 by avibootz
edited Jun 19, 2023 by avibootz
0 votes
#include <stdio.h>    

#define COLS 5

int sumDiagonalsAndBoundaries(int matrix[][COLS], int rows, int cols) {
    int sumBoundaries = 0, sumDiagonalLeft = 0, sumDiagonalRigth = 0;

    for (int i = 0; i < rows; i++) {
        sumDiagonalLeft += matrix[i][i];
        sumDiagonalRigth += matrix[i][cols - i - 1];
        for (int j = 0; j < COLS; j++) {
            if (i == 0 || j == 0 || i == rows - 1 || j == cols - 1) {
                sumBoundaries += matrix[i][j];
            }
        }
    }

    printf("sumBoundaries = %d\n", sumBoundaries);
    printf("sumDiagonalLeft = %d\n", sumDiagonalLeft);
    printf("sumDiagonalRigth = %d\n", sumDiagonalRigth);

    return sumBoundaries + sumDiagonalLeft + sumDiagonalRigth;
}


int main()
{
    int matrix[][COLS] = { { 1,   2,   3,   4,  0 },
                           { 5,   6, 100,   8,  1 },
                           { 2, 100,   8, 100,  3 },
                           { 1,   7, 100,   9,  6 },
                           { 9,  10,  11,  12, 13 } };

    // sumBoundaries = (1 + 2 + 3 + 4 + 0) = 10 + (1 + 3 + 6 + 13)  = 23 + 
    //                 (12 + 11 + 10 + 9) = 42 + (1 + 2 + 5) = 9 : 10 + 23 + 42 + 8 = 83

    // sumDiagonalLeft = (1 + 6 + 8 + 9 + 13) = 37 
    // sumDiagonalRigth = (0 + 8 + 8 + 7 + 9) = 32

    // 83 + 37 + 32 = 152

    int rows = sizeof matrix / sizeof matrix[0];
    int cols = sizeof matrix[0] / sizeof(int);

    printf("%d", sumDiagonalsAndBoundaries(matrix, rows, cols));

    return 0;
}




/*
run:

sumBoundaries = 83
sumDiagonalLeft = 37
sumDiagonalRigth = 32
152

*/


 



answered Jun 19, 2023 by avibootz
edited Jun 19, 2023 by avibootz

Related questions

2 answers 112 views
1 answer 168 views
2 answers 119 views
1 answer 137 views
1 answer 71 views
1 answer 76 views
1 answer 66 views
...