- •Общие сведения о массивах
- •Алгоритмы инициализации значений элементов массива
- •Инициализации значений элементов массива постоянными значениями
- •Ввод и вывод значений элементов массивов
- •Ввод значений элементов одномерного массива
- •Вывод значений элементов одномерного массива
- •Тестовая программа ввода и вывода одномерного массива
- •Int k; // Текущий предельный размер массива
- •Ввод значений элементов двухмерного массива
- •Вывод значений элементов двухмерного массива
- •Алгоритмы пересылки массивов
- •Пересылка двухмерного массива в одномерный массив
- •Пересылка одномерного массива в двухмерный массив
- •Простые алгоритмы работы с массивами
- •Алгоритм нахождения суммы и среднего арифметического значений элементов одномерного массива
- •Алгоритм нахождения суммы и среднего арифметического значений элементов двухмерного массива
- •Поиск элемента с максимальным и минимальным значениями
- •Поиск в массиве элемента с заданным значением
- •Алгоритм инициализации элементов одномерного массива значениями ряда целых нечетных чисел
- •Формирование единичной матрицы
- •Табуляция функции в массив
- •Организация стека при помощи массива
- •Организация очереди при помощи массива
-
Формирование единичной матрицы
Единичная матрица представляет собой квадратную матрицу с единичными значениями элементов главной диагонали и нулевыми значениями всех остальных элементов. Например, матрица размером 4*4 имеет значения элементов
i
1 0 0 0
j 0 1 0 0
0 0 1 0
0 0 0 1
Алгоритм формирования единичной матрицы выполняется в два шага. Сначала формируется нулевая матрица, ведь наибольшее количество элементов – это элементы с нулевыми значениями. Далее в главную диагональ нулевой матрицы записываются значения, равные 1. Рассмотрим текст программы формирования единичной матрицы.
#include "stdafx.h"
#include <conio.h>
#include <locale.h>
int _tmain(int argc, _TCHAR* argv[])
{
//Программа табуляции функции 5*sin(x) от 0град. с шагом 15град
//
const int n_Max = 20; //Предельный размер квадратной матрицы
float b[n_Max][n_Max]; //Сам массив b
int n; //Текущий предельный размер массива матрицы
int i;
int j;
setlocale( LC_ALL, "russian" ); // установка русского режима
printf("Программа формирования единичной матрицы\n");
printf("Введите количество строк квадратной матрицы\n");
scanf("%d",&n); //n теперь определено
//обнуление всех элементов массива b
//Задание j – номеров строк обнуляемых элементов массива
for (int j = 0; j<n; j++)
//Задание i – номеров столбцов строки j элементов массива
for (int i = 0; i<n; i++)
b[j][i] = 0.0;
//Формирование единичной диагонали
//Задание j – номеров строк и столбцов единичных элементов
//массива матрицы
for (int j = 0; j<n; j++)
b[j][j] = 1.0;
//Печать единичной матрицы
printf("Значения элементов единичной матрицы:\n");
//Задание j – номеров строк распечатываемых элементов массива
for (int j = 0; j<n; j++)
//Задание i – номеров столбцов строки j элементов массива
for (int i = 0; i<n; i++)
printf("b[%d][%d]= %f\n", j, i, b[j][i]);
//Завершение выполнения программы
printf("\nНажмите любую клавишу\n");
_getch();
return 0;
}
Формирование единичных элементов главной диагонали осуществляется одним циклом, поскольку номера строк и столбцов элементов главной диагонали совпадают:
j j
b[0,0] = 1
b[1,1] = 1
b[2,2] = 1
b[3,3] = 1
-
Табуляция функции в массив
Наконец, проанализируем готовую программу табуляции функции 5*sin(х) от 0о с шагом 30о в одномерный массив записей.
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <locale.h>
#define k_Max 100 //Предельный размер массива
int _tmain(int argc, _TCHAR* argv[])
{
//Программа табуляции функции 5*sin(x) от 0град с шагом 30град
//в одномерный массив записей
typedef struct Type_Elements_a { //Тип элементов массива
float x; // Аргумент функции
float y; // Функция
} Type_Elements_a;
typedef Type_Elements_a Type_a[k_Max]; //Тип массива a
Type_a a; //Сам массив a
int k; //Текущий предельный размер массива
float r; //Значение предшествующего
//и последующего аргумента таблицы
setlocale( LC_ALL, "russian" ); // установка русского режима
printf("Программа табуляции функции 5*sin(x)\n");
printf("от 0 град с шагом 30 град в одномерный");
printf(" массив записей\n");
printf("Введите количество точек функции\n");
scanf("%d",&k); //k теперь определено
//Табулирование функции */
r = 0.0; //Начальное значение угла таблицы, град.
//Задание i - номера инициализируемого элемента массива
for (int i = 0; i < k; i++)
{
// Инициализация очередного i-го элемента
a[i].x = r * 3.14159 / 180.0;
a[i].y = 5.0 * sin(r * 3.14159 / 180.0);
// Расчет значения следущего члена арифметической прогрессии
r = r + 15.0; // Новое значение аргумента функции
}
//Вывод на экран монитора массива a
printf("Значения элементов одномерного массива a:\n");
//Задание i - номера выводимого элемента массива
for (int i = 0; i < k; i++)
printf("%4d) x = %f y = %f\n", i + 1,a[i].x, a[i].y);
//Завершение выполнения программы
printf("\nНажмите любую клавишу\n");
_getch();
return 0;
}