Witam,
Mam za zadanie napisać program, który będzie sortował za pomocą algorytmów sortowania InsertionSort i MergeSort tablicę wektorów, gdzie kluczem sortowania będzie norma wektora. Nie mogę skorzystać z gotowej klasy , więc napisałem własną:
vector.h
#include
#include
using namespace std;
class Vector
{
int* arr;
int Size;
public:
Vector();
Vector(int);
Vector(const Vector&);
~Vector();
void create(int);
int size() const;
double Norm() const;
int& operator[](int);
Vector& operator=(const Vector&);
friend double operator*(const Vector&, const Vector&);
friend ostream& operator<<(ostream&, const Vector&);
friend istream& operator>>(istream&, Vector&);
friend bool operator<(const Vector&, const Vector&);
friend bool operator>(const Vector&, const Vector&);
};
vector.cpp
#include "vector.h"
Vector::Vector() { int size = 0; arr = NULL; create(size); }
Vector::Vector( int size = 0 ) { arr = NULL; create(size); }
Vector::Vector(const Vector& v) { arr = NULL; operator=(v); }
Vector::~Vector() { delete [] arr; }
void Vector::create(int size)
{
delete [] arr;
arr = NULL;
Size = 0;
arr = new int[size];
Size = size;
for(int i=0; i
}
int Vector::size() const { return Size; }
double Vector::Norm() const { return sqrt(*this * *this); }
int& Vector::operator [] (int i) { return arr[i]; }
Vector& Vector::operator=(const Vector& v)
{
if( this != &v )
{
create( v.Size );
for( int i=0; i
}
return *this;
}
double operator*(const Vector& a, const Vector& b)
{
double s = 0;
for( int i=0; i
return s;
}
ostream& operator<<(ostream& out, const Vector& v)
{
out << "[ ";
for( int i=0; i
out << "]" << endl;
return out;
}
istream& operator>>(istream& inp, Vector& v)
{
int size;
inp >> size;
v.create(size);
for( int i=0; i> v.arr[i];
return inp;
}
bool operator<(const Vector& a, const Vector& b) { return a.Norm() < b.Norm(); }
bool operator>(const Vector& a, const Vector& b) { return b
[/code]
Tutaj wszystko działa prawidłowo.
Teraz w programie głównym mam wczytać dwa parametry: N - liczba wektorów w tablicy, k - długość każdego wektora z tej tablicy.
Chcę stworzyć dynamiczną tablicę wektorów poleceniem Vector* vec_arr = new Vector[N], jednak potem nie jestem w stanie odwołać się do konkretnej współrzędnej konkretnego wektora. Tzn chcę, żeby vec_arr[i] wskazywało na i-ty wektor w tablicy, a naturalnie, by vec_arr[i][j] pokazywało mi j-tą współrzędną i-tego wektora. Niestety tak się nie dzieje i otrzymuję błąd. Co robić w tej sytucaji, by jednak odwoływać się do współrzędnych każdego wektora? Chodzi mi o rozwiązanie bez tablicy dwuwymiarowej i oparte na tej powyższej klasie.
Z góry wielkie dzięki, bo już nie mam pomysłów jak się za to zabrać…
Pozdrawiam,
A.