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