Witam, muszę napisać program w c++ na podstawie tego:

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

class Ulamek
{
private:
  int licznik;
  int mianownik;
  void skracaj();

public:
  Ulamek() // definicja pierwszego konstruktora
  {
    licznik = 1;
    mianownik = 1;
  }
  Ulamek(int l, int m); // deklaracja drugiego konstruktora
  void wypisz()
  {
    skracaj(); 
    cout << licznik << "/" << mianownik;
  }
  friend Ulamek pomnoz(Ulamek, Ulamek); // deklaracja przyjazni
}; // koniec definicji klasy

void Ulamek::skracaj()
{
  int a = abs(licznik);
  int b = abs(mianownik);
  while (a!=b)
    if (a>0)
      a = a-b;
    else
     b = b-a;
  licznik = licznik/a;
  mianownik = mianownik/a;
}

Ulamek::Ulamek(int l, int m)
{
  licznik = l;
  if (m!=0)
    mianownik = m;
  else
  {
    cout << "Mianownik nie moze miec wartosci zero ";
    getchar();
    exit(1);
  }
}

Ulamek pomnoz(Ulamek u1, Ulamek u2)		// funkcja mnożąca ułamki
{
  Ulamek wynik;
  wynik.licznik = u1.licznik*u2.licznik;
  wynik.mianownik = u1.mianownik*u2.mianownik;
  return wynik;					// wynikiem funkcji jest obiekt klasy Ulamek
}
int main()
{
  int l, m;
  cout << "Podaj licznik i mianownik pierwszego ulamka" << endl;
  cin >> l >> m;
  Ulamek a(l,m);
  cout << "Podaj licznik i mianownik drugiego ulamka" << endl;
  cin >> l >> m;
  Ulamek b(l,m);
  cout << "Pierwszy ulamek: ";
  a.wypisz();
  cout << endl << "Drugi ulamek: ";
  b.wypisz();
  cout << endl << "Iloczyn ";
  a.wypisz();
  cout << " i ";
  b.wypisz();
  cout << " wynosi ";
  pomnoz(a,b).wypisz();
  cin.ignore();
  getchar();
  return 0;
}

Jego treść brzmi następująco:
Napisz klasę wektor, która będzie miała metodę:
a) pobierającą wsp. wektora
b) wyświetlającą wsp. wektora w postaci [x;y]
c) obliczającą dl. wektora
oraz funkcję zaprzyjaźnioną:
a) sumującą dwa wektory
b) obliczającą iloczyn wektora przez liczbę (skalar)

Oto moje dotychczasowe 2h próby :/

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;

class Wektor
{
private:
  int x;
  int y;


public:
  Wektor() // definicja pierwszego konstruktora
  {
    x = 1;
    y = 1;
    double dlugosc();
  }
  Wektor(int l, int m); // deklaracja drugiego konstruktora
  void wypisz()
  { 
    cout << "[" << x << ";" << y << "]";
    
  }
  
//  friend Ulamek pomnoz(Ulamek, Ulamek); // deklaracja przyjazni
}; // koniec definicji klasy

double Wektor::dlugosc()
{
  double dlugosc;
  return dlugosc = sqrt(x*x+y*y);
}


/*

Ulamek pomnoz(Ulamek u1, Ulamek u2)		// funkcja mnożąca ułamki
{
  Ulamek wynik;
  wynik.licznik = u1.licznik*u2.licznik;
  wynik.mianownik = u1.mianownik*u2.mianownik;
  return wynik;					// wynikiem funkcji jest obiekt klasy Ulamek
}*/
int main()
{
  int l, m;
  cout << "Podaj x i y wektora" << endl;
  cin >> l >> m;
  Wektor a(l,m);
  cout << "Oto wektor: ";
  a.wypisz();
  a.dlugosc();
  cin.ignore();
  getchar();
  return 0;
}

Niestety pod żadnymi próbami ani razu mi się program nie uruchomił nawet, programowanie obiektowe jest dla mnie nowością... Na początku chciałem żeby pobierało mi wsp. wektora x1 i y1 oraz x2 i y2 ale jak widać nawet w taki sposób nie wyszło mi to. Bardzo serdecznie proszę o pomoc. Chociaż o jakieś ogarnięcie tego i podpowiedzenie mi dokładniej co pozmieniać. Pozdrawiam