- •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
Умножение матрицы на вектор.
Для вычисления произведения С матрицы А размером n*m на вектор B размером m необходимо вычислить , i=1,….,n.
Программа :
# include
# include
# define n 3
# define m 4
int main ()
{
int a[n][m],b[m],c[n];
clrscr ();
printf ("\n Заполнение элементов матрицы A[%i][%i] .",n,m);
for(int i=0;i
{
printf ("\n Ввод %i-й строки матрицы \n",i);
for (int j=0;j
{
printf (" a[%i][%] = ",i,j);
scanf ("%i",&a[i][j]);
}
}
printf ("\n Заполнение элементов вектора B[%i] .",m);
for(int i=0;i
{
printf (" b[%i] = ",i);
scanf ("%i",&b[i]);
}
for (int i=0;i
{
int s=0;
for (intj=0;j
s+=a[i][j]*b[j];
c[i]=s;
}
printf ("\n Получен вектор произведения С=А*B \n");
for (inti=0;i
printf ("%6i",с[i]);
getch();
}
Использование вспомогательной переменной s позволяет уменьшить время выполнения программы за счет исключения обращения в цикле по j к элементам массива C.
Умножение матрицы на матрицу.
Для умножения матрицы А размером n*k на матрицу B размером k*m необходимо вычислить , i=1,…,n; j=1,…,m.
Программа :
# include
# include
# define n 3
# define m 4
# define k 5
int main ()
{
int a[n][k],b[k][m],c[n][m];
clrscr ();
printf ("\n Заполнение элементов матрицы A[%i][%i] .",n,k);
for (int i=0;i
{
printf ("\n Ввод %i-й строки матрицы \n",i);
for (int j=0;j
{
printf (" a[%i][%] = ",i,j);
scanf ("%i",&a[i][j]);
}
}
printf ("\n Заполнение элементов матрицы B[%i][%i] .",k,m);
for(int i=0;i
{
printf ("\n Ввод %i-й строки матрицы \n",i);
for (int j=0;j
{
printf (" a[%i][%] = ",i,j);
scanf ("%i",&b[i][j]);
}
}
for (int i=0;i
for(int j=0;j
{
int s=0;
for (int l=0;l
s+=a[i][l]*b[l][j];
c[i][j]=s;
}
printf ("\n Получена матрица произведения С=А*B \n");
for (int i=0;i
{
for (int j=0;j
printf ("%6i",c[i][j]);
puts (" ");
}
getch();
}
Удаление строк матриц.
Алгоритм удаления строки является сходным с алгоритмом удаление элементов одномерного массива, за тем исключением, что операция переноса элементов выполняется для каждого столбца при переборе строк. Рассмотрим программу удаления из матрицы А заданной с клавиатуры строки T.
Программа :
# include
# include
# include
# define n 10
# define m 5
int main ()
{
int a[n][m];
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);
int k=n;
for (int i=t;i<(n-1);i++)
for(int j=0;j
a[i][j]=a[i+1][j];
k--;
printf ("\n Получена матрица A[%i][%i]. \n",k,m);
for(int i=0;i
{
for (j=0;j
printf ("%6i",a[i][j]);
puts (" ");
}
getch();
}