sumowanie danych z tablicy obiektów.

0

Hej,

Robię zadanka ze studiów i mam problem raz, że z utworzeniem tablicy studentów a dwa z podpunktem o sumie stypendiów.
screenshot-20220922225012.png

#include <iostream>
#include <cstdlib>

using namespace std;
class Student{
private:
    int index;
    int year;
    double salary;
    double su;

public:
    Student(int index, int year, double salary){
        this->index = index;
        this->year = year;
        this->salary = salary;
    }

    ~Student(){
    cout << "Usuwam dane studenta o indeksie: " << index << endl;
    }

    void information(){
        cout << index << endl;
        cout << year << endl;
        cout << salary << endl;
    }

    void change_salary(){
    cout<<"Stypendium przed zmianami: "<<salary<<endl;
    cout<<"Podaj wysokosc stypendium: ";
    cin>>salary;
    cout<<"Stypendium po zmianach: "<<salary<<endl;}

 /*   void sum(Student students[])
    {
        for (int i=0; i<3; i++)
        {
            su += students[i].salary;
        };
        cout << su;
    }*/
};


int main(){
Student student1(383432, 2, 2137.5);
Student student2(352345, 1, 4423.6);
Student student3(343245, 3, 6524.2);

Student students[3] = {student1, student2, student3};

double sum = students[0].salary + students[1].salary + students[2].salary;
return 0;
}


Wcześniej tablicę próbowałem też zrobić tak
screenshot-20220922225305.png
Aktualnie tablica działa ale nie wiem jak naprawić poprzedni kod tj. ten ze screena oraz w wysłąnym kodzie nie potrafię zsumować tych stypendiów. Informuje mnie, że pole salary jest prywatne no i takie ma być i jak to zrobić bez zmiany na public?

0

Spróbuj utworzyć metodę, np., get_salary, która zwróci wymagane prywatne pole.

0

A masz jakiś pomysł jak to zrobić?
bo kminię już jak to obejść od dobrych 3h i stoję w miejscu a uczę się żeby spróbować dostać się na staż :/

0
void sum(Student students[])
    {
        double su = 0.0;
        for (int i=0; i<3; i++)
        {
            su += students[i].salary;
        };
        cout << su;
    }

coś takiego zrobiłem ale nie wiem jak to teraz wywołać w mainie

0

Jesli chcesz sumować, tak jak w snipecie w mainie, to, np.:

#include <iostream>
#include <cstdlib>

using namespace std;
class Student{
private:
    int index;
    int year;
    double salary;
    double su;

public:
    Student(int index, int year, double salary){
        this->index = index;
        this->year = year;
        this->salary = salary;
    }
    double get_salary() {
        return this->salary;
    }
    ~Student(){
    cout << "Usuwam dane studenta o indeksie: " << index << endl;
    }

    void information(){
        cout << index << endl;
        cout << year << endl;
        cout << salary << endl;
    }

    void change_salary(){
    cout<<"Stypendium przed zmianami: "<<salary<<endl;
    cout<<"Podaj wysokosc stypendium: ";
    cin>>salary;
    cout<<"Stypendium po zmianach: "<<salary<<endl;}

 /*   void sum(Student students[])
    {
        for (int i=0; i<3; i++)
        {
            su += students[i].salary;
        };
        cout << su;
    }*/
};

int main(){
Student student1(383432, 2, 2137.5);
Student student2(352345, 1, 4423.6);
Student student3(343245, 3, 6524.2);

Student students[3] = {student1, student2, student3};

double sum = students[0].get_salary() + students[1].get_salary() + students[2].get_salary();
cout << sum<< endl;
return 0;
}
0

w sumie działa
pytanie czy jest to jakkolwiek zgodne ze sztuką.
Szczerze nie wiem czy mam traktować, że program działa to lecę dalej czy jakkolwiek próbować lepszych praktyk i optymalizacji?

0

Zadanie nawet nie jest skończone, wymaganiem jest, aby utworzyć funkcje realizujace wymienione czynności; dla, np., sumy, metode przyjmująca tablicę studentów i zwracająca sumę stypendiów

0

Czyli defacto wszystko powinno być w osobnych metodach?
A w mainie tak naprawde tylko wywoływanie wszystkiego i tworzenie obiektów?

1

Tak to sie robi.

0

no dobra to póki co zostawię jak jest i idę robić dalsze podpunkty tego zadania i potem bawić się w organizację.
Dzięki :D

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