Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
12.02.2015
Размер:
2.55 Кб
Скачать
#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;
}
Соседние файлы в папке c++ 2 курс