Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:c++ 2 курс / 78
.txt#include <iostream>
using namespace std;
struct Point { // структура для описания точки n-мерного евклидового пространства
int dims; // кол-во измерений
double* pts; // массив с координатами
};
void print_point(Point p) { // вывод в консоль точки
cout<<"{";
for (int i = 0; i < p.dims; i++) { // пробегаем по всем точкам
if (i != p.dims - 1) {
cout<<p.pts[i]<<", "; // выводим определенную координату
}
else {
cout<<p.pts[i];
}
}
cout<<"}";
}
Point lenghts(Point** mtrx, int _n, int _m, int dims) { // вычистление длин и проекций минимального гиперпараллелепипеда
Point lengths; // объявляем контейнер, в котором передадим результат
lengths.dims = dims; // кол-во измерений
lengths.pts = new double[dims]; // выделение памяти для массива координат
for (int k = 0; k < dims; k++) { // поиск максимальных значений по всем координатам
lengths.pts[k] = 0;
for (int i = 0; i < _n; i++) {
for (int j = 0; j < _m; j++) {
if (lengths.pts[k] < mtrx[i][j].pts[k]) { // если опр. координата больше максимума, то она становится максимумом
lengths.pts[k] = mtrx[i][j].pts[k];
}
}
}
}
return lengths; // возврат вычисленного значения
}
double v(Point p) { // вычисление объема
double _v = 1;
for (int i = 0; i < p.dims; i++) {
_v *= p.pts[i];
}
return _v;
}
int main(int argc, char* argv[]) {
int n = 0;
int m = 0;
cout<<"Enter n: "<<endl;
cin>>n; // ввод кол-ва строк матрицы
cout<<"Enter m: "<<endl;
cin>>m; // ввод кол-ва столбцов матрицы
Point** mtr = new Point*[n]; // выделение памяти для кол-ва строк
for (int i = 0; i < n; i++) // выделение памяти для столбцов
mtr[i] = new Point[m];
int dimension = 0;
cout<<"Enter dimension: "<<endl;
cin>>dimension; // ввод кол-ва измерений в пространстве
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
mtr[i][j].dims = dimension; // для каждого элемента матрицы определяем кол-во измерений
mtr[i][j].pts = new double[dimension]; // выделяем память для координат
for (int k = 0; k < dimension; k++) {
mtr[i][j].pts[k] = rand() % 20; // забиваем матрицу случайными числами от 0 до 20
}
}
}
cout<<"Points matrix: "<<endl;
for (int i = 0; i < n; i++) { // вывод мартицы на печать
for (int j = 0; j < m; j++) {
print_point(mtr[i][j]);
cout<<" ";
}
cout<<endl;
}
cout<<"Lengths: ";
print_point(lenghts(mtr, n, m, dimension)); // вывод проекций
cout<<endl;
cout<<"Objyom: "<<v(lenghts(mtr, n, m, dimension))<<endl; // вывод объема
system("pause");
return 0;
}