Дать возможность пользователю создать и заполнить массив - C (СИ)
Формулировка задачи:
Всем привет! Пытаюсь реализовать метод конечных разностей, и, после недели в гугле, программа работает. Единственно что хотелось улучшить так это дать возможность пользователю самому задавать массив, по незнанию сделал "топорно и чтоб хоть как-то работало". Код всей программы приводить не буду, только лишь пример используемого массива:
Задача для расчета температурного поля - тут массив 5х5. Как сделать, чтобы пользователь сам задавал размер массива/матрицы? Например 4х6, 7х5 и т.п.? И как задать отдельным столбцам/строкам отличные значения?
Для пояснения - приведенный массив это температура тела (внутренняя с индексом 0) и его поверхности (с индексом pov), которые могут различаться.
double T[5][5] = {tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, tw0, twpov, twpov, twpov, twpov, twpov};Решение задачи: «Дать возможность пользователю создать и заполнить массив»
textual
Листинг программы
//---------------------------------------------------------------------------
#include <stdio.h>
int main()
{
int n, m, i, j;
double **T; // Объявляем
scanf( "%d%d", &n, &m ); // Вводим размеры
printf( "n=%d, m=%d", n, m ); //
T = (double**) malloc( n * sizeof(double*) ); //// Выделяем память
for( i=0; i<n; i++ ) //
T[i] = (double*) malloc( m * sizeof(double) ); ////
for( i=0; i<n; i++ ) //// Заполняем
for( j=0; j<n; j++ ) //
T[i][j] = rand()%100; ////
for( i=0; i<n; i++ ) //// Удаляем
free( T[i] ); //
free( T ); ////
getch();
return 0;
}
//---------------------------------------------------------------------------
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные
n,m,iиjтипаint, а также переменнаяTтипаdouble **. - С помощью функции
scanfпользователь вводит значения переменныхnиm. - С помощью функции
mallocвыделяется память под массивTразмеромnс указателями на массивы размеромm. - В цикле
forзаполняются все элементы массиваTслучайными числами от 0 до 99 с помощью функцииrand(). - В цикле
forосвобождается память, выделенная под каждый из массивовT[i]. - Освобождается память, выделенная под массив
T. - Показывается сообщение, что программа работает, с помощью функции
getch. - Программа завершается, возвращая 0.