Переделать код под динамический массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В коде используется статический массив. А как записать в динамическом?
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 5
 
void create(float A[][n], float x)
{int i, j;
for(i=0;i<n;++i)
{for(j=0;j<n;++j)
{A[i][j]=((sin(i+j+2))*x);
}}}
 
void zammax(float A[][n])
{int i, j, t, max[n];
for(i=0;i<n;++i)
{max[i]=0;
for(j=0;j<n;++j)
{if (A[i][j]>A[i][max[i]]) max[i]=j;
}A[i][j]=fabs(A[i][i]);
}}
 
void otrpw3(float A[][n])
{int i, j;
for(i=0;i<n;++i)
{for(j=0;j<n;++j)
{if (A[i][j]<0)
A[i][j]=pow(A[i][j],3);
}}}
 
void sort(float A[][n])
{int i, j, k;
float temp;
for(i=0;i<n;++i)
{do
{k=0;
for(j=0;j<n-1;++j)
{if(A[i][j]>A[i][j+1])
{temp=A[i][j];
A[i][j]=A[i][j+1];
A[i][j+1]=temp;
k++;
}}}while(k);
}}
 
void print(float A[][n])
{int i, j;
for(i=0;i<n;i++)
{printf("\n");
for(j=0;j<n;j++)
{printf("%7.6f\t", A[i][j]);
}}}
 
int main()
{float x, A[n][n];
do{printf("Vvedite x: ");
scanf("%f",&x);
create(A,x);
zammax(A);
otrpw3(A);
sort(A);
print(A);
getch();
printf("\n");
}while(x!=0);
return 0;
}

Решение задачи: «Переделать код под динамический массив»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 5
 
void create(float ** A, float x)
{
    int i, j;
    for (i = 0; i<n; ++i)
    {
        for (j = 0; j<n; ++j)
        {
            A[i][j] = ((sinf(i + j + 2))*x);
        }
    }
}
 
void zammax(float ** A)
{
    int i, j, t, max[n];
    for (i = 0; i<n; ++i)
    {
        max[i] = 0;
        for (j = 0; j<n; ++j)
        {
            if (A[i][j]>A[i][max[i]]) max[i] = j;
        }A[i][j] = fabs(A[i][i]);
    }
}
 
void otrpw3(float ** A)
{
    int i, j;
    for (i = 0; i<n; ++i)
    {
        for (j = 0; j<n; ++j)
        {
            if (A[i][j]<0)
                A[i][j] = pow(A[i][j], 3);
        }
    }
}
 
void sort(float ** A)
{
    int i, j, k;
    float temp;
    for (i = 0; i<n; ++i)
    {
        do
        {
            k = 0;
            for (j = 0; j<n - 1; ++j)
            {
                if (A[i][j]>A[i][j + 1])
                {
                    temp = A[i][j];
                    A[i][j] = A[i][j + 1];
                    A[i][j + 1] = temp;
                    k++;
                }
            }
        } while (k);
    }
}
 
void print(float ** A)
{
    int i, j;
    for (i = 0; i<n; i++)
    {
        printf("\n");
        for (j = 0; j<n; j++)
        {
            printf("%7.6f\t", A[i][j]);
        }
    }
}
 
int main()
{
    float x;
    float ** A = new float * [n];
    for (int i = 0; i < n; i++)
        A[i] = new float[n];
    do{
        printf("Vvedite x: ");
        scanf("%f", &x);
        create(A, x);
        zammax(A);
        otrpw3(A);
        sort(A);
        print(A);
        getch();
        printf("\n");
    } while (x != 0);
    return 0;
}

Объяснение кода листинга программы

  1. Программа использует динамический массив для хранения информации.
  2. Пользователю предлагается ввести значение переменной x.
  3. Значение x используется в функции create для вычисления значений матрицы A.
  4. Функция zammax используется для поиска максимального значения в каждой строке матрицы A и сохранения индекса этого значения в массиве max.
  5. Функция otrpw3 используется для возведения каждого отрицательного значения в матрице A в куб.
  6. Функция sort используется для сортировки значений в каждой строке матрицы A в порядке возрастания.
  7. Функция print используется для отображения значений матрицы A на экране.
  8. После выполнения всех операций программа запрашивает у пользователя новое значение x или завершает цикл, если x равно нулю.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5
Похожие ответы