Calculate the sum of the values of a matrix and store it at the first available position of a vector

Asked

Viewed 43 times

0

I am having problems in the cycle that stores the value of the variable aux in the first empty position of the vector re and I can’t see where my error is. The value being stored is not the value of aux, but the value -842150451

    int l = 0, c = 0, o = 0, aux = 0;
    int** mat = 0, *re = 0, reaux = 0;

    printf("Ordem da matriz quadrada:\n>");
    scanf_s("%i", &o);
    l = o;
    c = o;

    reaux = l + c + 2;
    re = malloc(sizeof(int*) * reaux);

    //soma colunas
    //ciclo para somar os valores
    for (int i = 0; i < c; i++) {
        for (int j = 0; j < l; j++) {
            aux += mat[i][j];
        }

    }
    //ciclo para armazenar no primeiro slot vazio
    for (int k = 0; k < (l + c) - 1; k++) {
        if (re[k] == 0) {
            re[k] = aux;
            aux = 0;

        }
    }
    //ciclo para que caso a soma da coluna seja diferente da soma da coluna anterior a variável "cl" receba 1
    for (int i = 0; i < c; i++) {
        if ((int)i != 0 && re[(int)i] != re[(int)i - 1]) {
            cl = 1;
        }
    }
  • Here: re = malloc(sizeof(int*) * Reaux); shouldn’t it be sizeof(int) and not sizeof(int*)? If you haven’t initialized your re array for what reason you test if the content is zero?

  • I initialized the array when I declared *re = 0,, but I changed the malloc line to (int) as Voce suggested and the result was the same: -842150451.

  • You did not initialize the array with zero, you assigned zero to the re pointer and after that you assigned re the address of the allocated area overwriting zero.

  • And how I fix it?

  • After allocating your array scan all your allocated positions by assigning zero to each position.

  • Also missing to allocate its matrix mat. Allocate an array of pointers (rows) and each of these pointers points to an allocated area of integers (columns).

Show 1 more comment
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.