Переделать код под динамический массив - 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; }
Объяснение кода листинга программы
- Программа использует динамический массив для хранения информации.
- Пользователю предлагается ввести значение переменной x.
- Значение x используется в функции create для вычисления значений матрицы A.
- Функция zammax используется для поиска максимального значения в каждой строке матрицы A и сохранения индекса этого значения в массиве max.
- Функция otrpw3 используется для возведения каждого отрицательного значения в матрице A в куб.
- Функция sort используется для сортировки значений в каждой строке матрицы A в порядке возрастания.
- Функция print используется для отображения значений матрицы A на экране.
- После выполнения всех операций программа запрашивает у пользователя новое значение x или завершает цикл, если x равно нулю.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д