Utworzyć klasę

0

Hej miałem takie zadanko do zrobienia, możecie sprawdzić czy jest poprawne.
Praktycznie identycznie zrobiłem zadanie na kolokwium. Zadanie kompilowało i zwracało takie same wyniki jak teraz. Po skończeniu kolokwium, trzeba było samą klasę wrzucić na stronę i ten wykładowca ma potem "automatyczną sprawdzarkę" która przyznaje punkty za zrobione zadanie. Wygodny strasznie :/ Wyszło, że mój program się nie kompiluje :)

Ciało porusza się ruchem jednostajnym z prędkością v pokonuje w czasie t drogę s= vt. Napisz klasę Velocity reprezentującą ciało poruszające się z prędkością v. Zaimplementuj:

  • Stałą metodę distance, która przyjmujęczas t i zwraca drogę s.
  • Stałą metodę time, która przyjmuję drogę s i zwraca czas t.
  • Stałą bezargumentową metodę velocity zwracah aca prędkość v
  • Metodę velocity, która przyjmuje i ustawia nową prędkość v.

Nowoutworzony obiekt reprezentuje ciało o prędkości jeden. Klasa powinna być przygotowana do użycia w przykładowym programie poniżej. Klasa nie korzysta z żadnych plików nagłówkowych.
przykładowy program

int main(){
    Velocity velocity;
    cout << velocity.velocity() << " "
         << velocity.distance(1.5) << " "
         << velocity.time(7.5) << endl;
    velocity.velocity(2.5);
    cout << velocity.velocity() << " "
         << velocity.distance(1.5) << " "
         << velocity.time(7.5) << endl;}

Mój program:

#include <iostream>
using namespace std;
class Velocity{
public:
    double const distance(double x){
        double s = v*x;
        return s;
    }
    double const time(double x){
        double t = x/v;
        return t;
    }
    const velocity(){
        return v;
    }
    void velocity(double x){
        v = x;
    }
private:
    double v = 1.;
};
int main(){
    Velocity velocity;
    cout << velocity.velocity() << " "
         << velocity.distance(1.5) << " "
         << velocity.time(7.5) << endl;
    velocity.velocity(2.5);
    cout << velocity.velocity() << " "
         << velocity.distance(1.5) << " "
         << velocity.time(7.5) << endl;
         return 0;
}
2
velocity.velocity()
void velocity(double x){
    v = x;
}

Co tu jest nie tak?

  1. liczba argumentów nie odpowiada sygnaturze funkcji
  2. takie nazewnictwo setterów jest maksymalnie mylące
0

Jeśli chodzi o ten przykładowy program,który jest. No to to jest akurat treść zadania. Ja tego nie pisałem. W takim razie jak powinno wyglądać nazewnictwo w drugi punkcie? Ogólnie cały kod jest poprawny?

0

const velocity() ? A co to?
Stała metoda to co innego niż metoda zwracająca stałą.

1 użytkowników online, w tym zalogowanych: 0, gości: 1