Форум программистов, компьютерный форум, киберфорум
Наши страницы

Задача на векторы в в н-мерном пространстве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача на матрицу http://www.cyberforum.ru/cpp-beginners/thread26115.html
Дана целочисленная матрица 4x7. Определить минимальное и максимальное значения матрицы и их местоположение. Найти среднее арифметическое значение положительных элементов и модулей отрицательных...
C++ составить программу:дана матрица.... Дана целочисленная матрица размера 6x9, содержащая как положительные, так и отрицательные элементы. Сформировать одномерные массивы, состоящие из сумм элементов четных строк и нечетных столбцов.... http://www.cyberforum.ru/cpp-beginners/thread26099.html
C++ Квадратная матрица. Исключить строку, в которой находиться максимальный элемент
Подскажите пожалуйста. Нужно написать программу. вот условие: Дана квадратная матрица размером nxn. исключить из нее строку, в которой находиться максимальный элемент. Матрица должна быть...
Как сделать что бы 2 функции работали одновременно C++
Здраствуите,подскажите пожалуисто что надо сделать что бы 2 функции работали одновременно,я делаю игру танчики ,допустим танчик едит я нажемаю энтер и выстреливает пулька ,проблема- пока пуля не...
C++ Структуры http://www.cyberforum.ru/cpp-beginners/thread26077.html
Как написать очень маленькую программу на С++,работа с структурами!написать программу кто лучше учится в группе девочки или мальчики?
C++ Сформировать одномерный массив из минимальных значений элементов столбцов двумерного массива Написать программу на С++. Нужно, чтобы программа сформировала одномерный массив из минимальных значений элементов столбцов двумерного массива. Размерность: 4 х 5 Значения: действительные Вот... подробнее

Показать сообщение отдельно
LessSpam
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 9

Задача на векторы в в н-мерном пространстве - C++

15.03.2009, 15:39. Просмотров 1569. Ответов 6
Метки (Все метки)

Здравствуйте.

Задали вот задачку в универе, а знаний чтоб её решить нету ) Надо сделать класс, который вычислял бы расстояние между двумя векторами в n-мерном пространстве. Также есть некоторые условия... Должны использоваться следущие методы:

Vector<n> () даёт координатам нулевое значение
Vector<n> (vector<float> crds) задаёт координатам данные значения
distanceFrom(Vector<n> v) находит длину между двумя векторами (в
одинаковом пространстве)

Метод distanceFrom должен использовать итератор (мб не правильно перевёл, тк задание у меня не на русском, и не на англ =)) ). Координаты вектора должны храниться в std::vector, в переменной coords.

Сам пробовал сделать, вот что вышло

1) geometry.h
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef GEOMETRY_H
#define GEOMETRY_H
 
#include <iostream>
using namespace std;
 
#include <vector>
#include "vector2.h"
 
 
#endif // GEOMETRY_H
2)vector2.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef VECTOR2_H
#define VECTOR2_H
 
 
 
#include "geometry.h"
 
template <unsigned short n>
 
class Vector {
 
public:
    std::vector<float> coords;
 
    Vector<n> ();
 
    Vector<n> (vector<float> crds);
    
    string toString();
 
 
};
 
#endif
3) vector2.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "geometry.h"
#include "math.h"
template <int n>
 
Vector<n>::Vector(){
    vector<float> coords(n,0);
}
 
template <int n>
Vector<n>::Vector(vector<float> crds) {
    for(int i =0; i<=n; i++) {
        coords.at(i) = crds.at(i); }
}
4) тестовый класс geometrytest.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cstdlib>
#include "geometry.h"
 
 
 
int main (int argc, char* argv[]) {
 
    Vector<6> v1();
    std::vector<float, std::allocator<float> > c (5,0); 
    
    Vector<6> v2 = Vector<6>(c);
    
 
    return EXIT_SUCCESS;
}

Ошибка возникает уже в пунтке 2 (Vector<n> (vector<float> crds)), в тест классе пишет такую ошибку

g++ -c -o geometrytest.o geometrytest.cpp
g++ geometrytest.o vector2.o -o program
geometrytest.o:geometrytest.cpp.text+0x1a8): undefined reference to `Vector<6>::Vector(std::vector<float, std::allocator<float> >)'
collect2: ld returned 1 exit status
make: *** [program] Error 1


Раньше с Ц++ не работал, в основном изучал яву. Ничего похожего оттуда не припоминаю.

Возможно слишком много написал, но хотел чтоб задание выглядело как можно понятнее. Просьба помочь с этим заданием, или при возможности хотя бы скинуть примеры или литературу....

Заранее всем благодарен.
Артём.

Добавлено через 30 минут 17 секунд
Нашёл вот похожую темку Класс вектор в n-мерном пространстве . Но там, как я понял, координаты вводяться один за другим. А у меня в задание требуется чтоб вводились все сразу (или я опять чего то недопонял)?

Добавлено через 12 часов 3 минуты 44 секунды
C++
1
Vector<n>::Vector(vector<float> crds)
Какое вообще значение должно вводиться в скобках =\

Добавлено через 19 минут 51 секунду
Вот попробовал написать дальше (сразу говорю, что это бред, тк вообще ничего не понимаю в этой теме.... )

1) vector2.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "geometry.h"
#include "math.h"
 
 
vector<float> coords;
template <int n>
Vector<n>::Vector(){
    for(int i =0; i<n;i++){
        coords.push_back(0);}
    
}
 
template <int n>
Vector<n>::Vector(vector<float> crds){
    for(int i =0; i<crds.size();i++){
        coords.push_back(crds.at(i));}
    }
 
 
template <int n>
float Vector<n>::distanceFrom (Vector<n> v) {
    float summa = 0;
    int i = 0;
    for (vector<int>::iterator it = v.coords.begin(); it!=v.coords.end(); it++)
    {
        summa = summa + pow((coords.at(i) + *it),2);
        i++;}
    return sqrt(summa) ; }
2) geometrytest.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
#include "geometry.h"
 
 
 
int main (int argc, char* argv[]) {
 
    Vector<6> v1();
    vector<float> crds (6,3);
    
    Vector<6> v2(vector<float> crds);
    
        
cout<<v1.distanceFrom(v2)<<endl;
 
    return EXIT_SUCCESS;
}

Если кто нить видит явные ошибки, напишите хотя бы о них.

Добавлено через 23 минуты 55 секунд
Выдаёт такую ошибку:
C++
1
2
3
4
g++    -c -o geometrytest.o geometrytest.cpp
geometrytest.cpp: In function `int main(int, char**)':
geometrytest.cpp:15: error: request for member `distanceFrom' in `v1', which is of non-class type `Vector<6> ()()'
make: *** [geometrytest.o] Error 1
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru