Тема: указатели. Условие задачи описано ниже:

Дана размерность матрицы (строки, столбцы) и сама матрица. Рассортировать отрицательные элементы каждого столбца матрицы по возрастанию. Положительные элементы оставить на своих местах. Вывести полученную матрицу. Дополнительных массивов не использовать. Разбивать на функции. Помогите переписать мой код так, чтобы:

  1. память для массива выделялась динамически;

  2. используя указатели (имею в виду следующее: * (a+i)=* (a+i+1) <=> a[i]=a[i+1]);

  3. разбить код на отдельные функции.

    #include <stdlib.h>
    #include <time.h>
    #include <stdio.h>
    #include <conio.h>
    #include <locale.h>
    int main()
    {
        int A[100][100];
        int j, i, N, M, tmp;
        setlocale(LC_ALL, "ru");
            printf("\nКол-во строк: ");
            scanf_s("%d", &N);
            printf("\nКол-во столбцов: ");
            scanf_s("%d", &M);
        printf("\n\n Введите элементы массива: \n\n");
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < M; j++)
            {
                scanf_s("%d", &A[i][j]);
            }
        }
        printf("\n\n Исходный массив: \n\n");
            for (i = 0; i < N; i++)
            {
                for (j = 0; j < M; j++)
                {
                    printf("%d\t", A[i][j]);
                }
                printf("\n");
            }           
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < M; j++)
            {
                for (int k = j; k < M; k++)
                {
                    if (A[j][i] < A[k][i] && A[j][i] < 0 && A[k][i] < 0)
                    {
                        tmp = A[k][i];
                        A[k][i] = A[j][i];
                        A[j][i] = tmp;
                    }
                }
            }
        }
        printf("\n\n Преобразованный массив: \n\n");
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < M; j++)
            {
                printf("%d\t", A[i][j]);
            }
            printf("\n");
        }
        printf("\n");
            system("PAUSE");    
            return 0;
    }
    

Ответы (0 шт):