Инициализация многомерных массивов
1. Инициализируем как одномерный массив.
float rain[2][3]={10.2, 8.1, 6.8, 9.2, 7.8, 4.4};
2. Инициализируем каждую строку.
float rain[2][3]={{10.2, 8.1, 6.8},
{9.2, 7.8, 4.4}};
3. Можно инициализировать в строке не все элементы, а только первые указанные.
int array[2][3]={{2, 8},
{9}};
4. Можно не задавать количество строк. Оно будет определяться автоматически по заданным инициализаторам.
int mas[][3]={{10, 8},
{9, 7, 4}};
Стандартные алгоритмы работы с двумерными массивами
К стандартным алгоритмам работы с двумерными массивами (матрицами) относятся:
1. Сложение (вычитание) двух матриц;
2. Умножение матрицы на скаляр;
3. Умножение матрицы на вектор;
4. Умножение матрицы на матрицу;
5. Транспонирование матрицы;
6. Вставка (удаление) строк и столбцов матрицы;
7. Вычисление обратной матрицы.
8. Перестановка строк и столбцов.
Пример 1. Сложение двух матриц.
void main(void){
int i,j;
float mas1[3][4], mas2[3][4];
for (i=0; i<3; i++)
for (j=0; j<4; j++){
mas1[i][j]+=mas2[i][j];
printf(mas1[%d][%d]=%.2f\n”, i, j, mas1[i][j]);
}
}
Пример 2. Умножение матрицы на вектор
void main(void){
int i,j;
float mas1[3][4], vec[4], var, mas2[3];
for (i=0; i<3; i++) {
var = 0;
for (j=0; j<4; j++)
var += mas1[i][j] * vec[j];
mas2[i] = var;
printf(mas2[%d] = %.2f\n”, i, mas2[i]);
}
}
Пример 3. Умножение матрицы на матрицу
void main(void){
int i, j, k;
float mas1[3][4], var, mas2[4][5], mas3[3][5];
for (i=0; i<3; i++) {
for (j=0; j<5; j++) {
var = 0;
for (k=0; k<4; k++)
var += mas1[i][k] * mas2[k][j];
mas3[i][j] = var;
printf(mas3[%d][%d] = %.2f\n”, i, j, mas3[i][j]);
}
}
}
Пример 4. Вставить строку
void main(void){
int i, j;
float mas1[4][4], var=1, vec[4];
for (i=0; i<4; i++)
for (j=3; j<var; j--)
mas1[j][i] = mas1[j-1][i]; //сдвиг строк
for (i=0; i<4; i++)
mas1[var][i] = vec[i];
}
ФУНКЦИИ
Функция – это фрагмент программы со своим именем, к которому можно обратиться для выполнения необходимых действий.
Функция содержит как данные, так и операции над этими данными. Если для объекта имя ссылается на область памяти, где он хранится, то и имя функции ссылается на начало кода этой функции. Функции в Си играют ту же роль что и функции, программы, процедуры в других языках.
- они освобождают от повторного программирования, если конкретную задачу нужно решать в программе несколько раз.
- повышают уровень модульности программы, облегчают её чтение, внесение изменений, коррекцию ошибок. Например:
void main (void){
float list[50];
read list (list); // ввод набора чисел
sort list (list); // сортировка
average (list); // поиск среднего
bargaph (list); // печать графика
}
- cозданные функции можно использовать и в других программах.
Функции бывают библиотечные и пользовательские. Для использования библиотечных функций нужно указать заголовочный файл, в которых они объявлены (директива #include).
Дата добавления: 2018-11-25; просмотров: 596;