@Vovasab

Как посчитать количество отрицательных элементов в матрице?

Я хочу вывести количество отрицательных чисел каждого столбика в отдельный массив, но не понимаю в чем ошибка
int row, column;
    printf("Enter number of rows: ");
    scanf("%d", &row);
    printf("Enter number of column: ");
    int **matrix = (int**)malloc(row * sizeof(int));
    scanf("%d", &column);
    int *arr = (int*)(malloc(sizeof(int) * column));
    printf("Enter value of k: ");
    scanf("%d", &k);
    for (int i = 0; i < row; ++i)
    {
        matrix[i] = (int*)malloc(column * sizeof(int));
    }
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < column; ++j)
        {
            printf("Element matrix[%d][%d] = ", i+1, j+1);
            scanf("%d", &matrix[i][j]);

        }
    }
    printf("Your matrix: \n");
    for (int i = 0; i < row; ++i)
    {
        for (int j = 0; j < column; ++j)
        {
            printf("[%d]\t", matrix[i][j]);
        }
        printf("\n\n");
    }

    for (int i = 0; i < column; ++i)
    {
        for (int j = 0; i < row; ++j)
        {
            if(matrix[i][j] < 0)
                arr[j]++;
        }
    }

    for (int i = 0; i < column; ++i)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
  • Вопрос задан
  • 1214 просмотров
Решения вопроса 3
Zoominger
@Zoominger
System Integrator
for (int i = 0; i < column; ++i)
    {
        for (int j = 0; i < row; ++j)
        {
            if(matrix[i][j] < 0)
                arr[j]++;
        }
    }

Разве не:
arr[i]++;
?
Ответ написан
Gremlin92
@Gremlin92
Целеустремленный
Неправильно выделяете память:
Int **matrix=(int**)malloc(sizeof(int*)*row);
For(int i=0;i<row;i++)
Matrix[i]=(int*)malloc(sizeof(int)*column);

И в конце не забудьте
For()
Free(matrix[i]);
Free(matrix);

Ещё у вас там в цикле условие не по j а по i вообще вникать неохота, я с телефона, ещё
Int*arr=(int*)malloc(sizeof(int)*row*column);
Если все числа будут отрицательными то выделяемых память на всю таблицу
Ответ написан
Комментировать
myjcom
@myjcom
Добавлю
тут 2(3)
for (int i = 0; i < column; ++i)
    {
        for (int j = 0; i < row; ++j)
        {
            if(matrix[i][j] < 0)
                arr[j]++;
        }
    }


И arr надо calloc
И что если размеры row col будут разные. У вас цикл наоборот а индексы прежние.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы