- •1. Основные типы данных. Целый, символьный, вещественный, voit
- •2. Структура программы. Примеры простейшей программы, использующей ввод/вывод на экран(сложить 2 числа)
- •2.3. Константы
- •3.1. Условный оператор
- •3.2. Оператор множественного выбора
- •1.4. Операторы
- •1.4.1. Оператор выражение
- •1.4.2. Пустой оператор
- •1.4.3. Составной оператор
- •1.4.4. Оператор if
- •1.4.5. Оператор switch
- •1.4.6. Оператор break
- •1.4.7. Оператор for
- •1.4.8. Оператор while
- •1.4.9. Оператор do while
- •1.4.10. Оператор continue
- •1.4.11. Оператор return
- •1.4.12. Оператор goto
- •6. Статические массивы(умножение матриц) двумерные статические массивы (матрицы).
- •Заполнение матриц.
- •Вывод элементов двумерных массивов.
- •Организация символьного одномерного массива в виде матрицы символов.
- •Квадратные матрицы. Работа с диагональными элементами.
- •Транспонирование матриц.
- •Умножение матрицы на вектор.
- •Умножение матрицы на матрицу.
- •Удаление строк матриц.
- •Включение столбца в матрицу.
- •Преобразование матрицы.
- •Преобразование матрицы в одномерный массив.
- •3.6. Описание и определение функций.
- •Лекция 6. Технология программирования OpenMp
Включение столбца в матрицу.
Алгоритм включения столбца в матрицу является сходным с алгоритмом включения элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждой строки при переборе столбцов. Рассмотрим пример, где необходимо в квадратной матрице А вставить столбец, содержащий ее элементы главной диагонали - следующим за столбцом, содержащим минимальный элемент матрицы. Для этого перепишем диагональные элементы в массив B, найдем минимальный элемент и его индекс по столбцу. Перебирая столбцы, сдвинем все столбцы на позицию вправо начиная от найденного индекса столбца минимального элемента. Занесем в следующий столбец за индексом минимального элемента - элементы столбца, которые хранятся в массиве B.
Программа:
# include
# include
# include
# define n 7
int main ()
{
clrscr ();
int a[n][n+1],b[n],min,j_min;
clrscr ();
randomize();
printf ("\n Сформирована квадратная матрица A[%i][%i] .",n,n);
for (int i=0;i
{
for (int j=0;j
{
a[i][j]=random(31)-15;
printf ("%6i",a[i][j]);
}
puts (" ");
}
for (int i=0;i
b[i]=a[i][i];
min=a[0][0]; j_min=0;
for (int i=0;i
for (int j=0;j
if(a[i][j]
{
min=a[i][j];
j_min=j;
}
int m=n;
m++;
for (int j=m-1;j>j_min;j--)
for (int i=0;i
a[i][j]=a[i][j-1];
for(int i=0;i
a[i][j_min+1]=b[i];
printf ("\n Получен массив A[%i][%i]\n",n,m);
for (int i=0;i
{
for (j=0;j
printf ("%6i",a[i][j]);
puts (" ");
}
getch();
}
Преобразование матрицы.
Предыдущий пример может служить так же и примером преобразования матрицы, однако довольно часто встречаются задачи на преобразования матриц за счет изменения значений их элементов. Рассмотрим пример на умножение заданной с клавиатуры строки матрицы на элемент, являющийся "седловой" точкой, т.е. например, минимальным элементом из максимальных элементов по строкам. Для решения такой задачи следует определить значение "седлвой" точки. Это можно сделать, организовав поиск максимального элемента по каждой строке и занесение его в элемент соответствующий индексу этой строки одномерного массива. Далее найти минимальный элемент в получившемся массиве, который и будет являться "седловой" точкой. После алгоритм становится достаточно не сложным. Необходимо ввести с клавиатуры индекс строки для преобразования и в цикле по столбцам преобразовать все элементы заданной строки, умножив их значение на полученный элемент "седловой" точки.
Программа :
# include
# include
# include
# define n 10
# define m 5
int main ()
{
int a[n][m],b[n],max,sedlt;
clrscr ();
randomize();
printf ("\n Целочисленная матрица A[%i][%i] сформированные случайными числами \n диапазона от -150 до 150.\n",n,m);
for (int i=0;i
{
for (int j=0;i
{
a[i]=random(301)-150;
printf ("%6i",a[i]);
}
puts(" ");
}
int t;
printf ("\n Введите номер строки матрицы для ее умножения ее на значение 'седловой' точки : ");
scanf ("%i",&t);
for (int i=0;i
{
max=a[i][0];
for(int j=1;j
if (a[i][j]>max)
max=a[i][j];
b[i]=max;
}
sedlt=b[0];
for (int i=1;i
if (b[i]
sedlt=b[i];
for (int j=0;j
a[t][j]*=sedlt;
printf ("\n Получена матрица A[%i][%i]. \n",n,m);
for (int i=0;i
{
for (int j=0;j
printf ("%6i",a[i][j]);
puts (" ");
}
getch();
}