Введение
В этом практическом занятии вы научитесь выполнять различные операции с матрицами, такие как сложение, вычитание и умножение, над заданным двумерным массивом с использованием языка программирования C++. Также вы научитесь эффективно манипулировать и использовать массивы.
Создание файла программы на C++
Создайте новый файл с именем matrix_operations.cpp в директории ~/project. Это можно сделать с использованием следующей команды в терминале.
touch ~/project/matrix_operations.cpp
Подключение необходимых библиотек и настройка главной функции
Первым шагом в нашей программе на C++ является подключение библиотек, необходимых для операций ввода/вывода и очистки консоли. Затем настройте главную функцию для вашей программы на C++. Вы можете использовать следующий код в качестве шаблона.
#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
// Ваш код здесь
getch();
return 0;
}
Сложение двух матриц
В этом шаге мы создадим случай для сложения двух матриц. Программа на C++ попросит пользователя ввести размерность или размеры двух матриц (должны быть m*n и o*p).
Если размерности матриц не совпадают, программа вернет сообщение об ошибке. Затем вводятся элементы матриц и они складываются. Финальный код должен выглядеть следующим образом.
//СЛОЖЕНИЕ
case 1:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Сложение возможно "<<endl;
}
else
{
cout<<"Сложение невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nСложение:\nc=a+b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
Вычитание двух матриц
В этом шаге мы создадим случай для вычитания двух матриц. Программа на C++ попросит пользователя ввести размерность или размеры двух матриц (должны быть m*n и o*p).
Если размерности матриц не совпадают, программа вернет сообщение об ошибке. Затем вводятся элементы матриц и они вычитаются. Финальный код должен выглядеть следующим образом.
//ВЫЧИТАНИЕ
case 2:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Вычитание возможно "<<endl;
}
else
{
cout<<"Вычитание невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nВычитание:\nc=a-b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]-b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
Умножение двух матриц
В этом шаге мы создадим случай для умножения двух матриц. Программа на C++ попросит пользователя ввести размерность или размеры двух матриц (должны быть m*n и o*p).
Если размерности матриц не совместимы, программа вернет сообщение об ошибке. Затем вводятся элементы матриц и они умножаются. Финальный код должен выглядеть следующим образом.
//УМНОЖЕНИЕ
case 3:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"* \n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"* \n";
cin>>p;
if (n==o)
{
cout<<"Умножение возможно "<<endl;
}
else
{
cout<<"Умножение невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nУмножение:\nc=aXb=";
for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
c[i][j]=0;
for (int k=1;k<=n;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<c[i][j]<<" ";
}
}
break;
Запуск программы на C++
Вы можете запустить файл matrix_operations.cpp, скомпилировав его с помощью следующей команды в терминале:
g++ ~/project/matrix_operations.cpp -o matrix && ./matrix
Возможно, вам придется заменить matrix_operations.cpp именем вашего файла с программой на C++.
Предполагая, что ваш код выдаёт ожидаемый результат, вы должны увидеть приглашение для ввода номера случая (1 для сложения, 2 для вычитания и 3 для умножения). После ввода вашего выбора программа попросит вас ввести матрицы в соответствии с выбранной операцией.
Полный код программы на C++
Вот полный код для нашего файла программы matrix_operations.cpp.
#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
int a[50][50],b[50][50],c[50][50],i,j,m,n,o,p,l=1,r;
cout<<"Введите вариант:\n";
cin>>r;
switch(r)
{
//СЛОЖЕНИЕ
case 1:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Сложение возможно "<<endl;
}
else
{
cout<<"Сложение невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nСложение:\nc=a+b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]+b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
//ВЫЧИТАНИЕ
case 2:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (m==o&&n==p)
{
cout<<"Вычитание возможно "<<endl;
}
else
{
cout<<"Вычитание невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nВычитание:\nc=a-b=";
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
c[i][j]=a[i][j]-b[i][j];
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<c[i][j]<<" ";
}
}
break;
//УМНОЖЕНИЕ
case 3:
cout<<"\nВведите размерность матрицы a (должна быть m*n): "<<endl;
cin>>m;
cout<<"*\n";
cin>>n;
cout<<"Введите размерность матрицы b (должна быть o*p): "<<endl;
cin>>o;
cout<<"*\n";
cin>>p;
if (n==o)
{
cout<<"Умножение возможно "<<endl;
}
else
{
cout<<"Умножение невозможно ";
l=0;
}
if(l)
{
cout<<"\n\nВведите элементы матрицы 1: "<<endl;
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
cin>>a[i][j];
}
cout<<"Элементы матрицы 1: ";
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
}
cout<<"\nВведите элементы матрицы 2: "<<endl;
for (i=1;i<=o;i++)
{
for (j=1;j<=p;j++)
cin>>b[i][j];
}
cout<<"Элементы матрицы 2: ";
for (i=1;i<=o;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<b[i][j]<<" ";
}
cout<<"\n\n\nУмножение:\nc=aXb=";
for (i=1;i<=m;i++)
{
for (j=1;j<=p;j++)
{
c[i][j]=0;
for (int k=1;k<=n;k++)
{
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
}
for (i=1;i<=m;i++)
{
cout<<endl;
for (j=1;j<=p;j++)
cout<<c[i][j]<<" ";
}
}
break;
// стандартный случай
default:
cout<<"Неверный выбор";
}
getch();
return 0;
}
Резюме
В этом практическом занятии вы узнали, как выполнять различные операции с матрицами на заданном двумерном массиве с использованием программирования на C++. Вы также узнали, как манипулировать и использовать массивы. Теперь вы должны хорошо понять, как работают матрицы в программировании на C++.



