program w ktorym dodaje vectory przechowujace w strukturze

0

Siemka, jak napisać program który w swojej strukturze przechowa vector a potem za pomocą osobnej funckjii będziemy mogli dodać dwa kolejne indeksy tego vectora? Poniżej wklejam mój kod:

#include<vector>
using namespace std;

struct Vec{
    vector<int>sVec;
};

void dodaj(Vec &wektor1){
    vector <Vec>suma;
    suma.push_back(wektor1.sVec[0]+wektor1.sVec[1])
    return suma[0];
}

int main()
{
    Vec vecMain;
    vecMain.sVec.push_back(25);
    vecMain.sVec.push_back(20);
    cout<<"wartosc wektora: "<<vecMain.sVec[0]<<" " <<vecMain.sVec[1];
    dodaj(vecMain);

    return 0;
}
2

Przekombinowałeś.

struct Foo {
	vector<int> vec;
	void add() {
		vec.resize(vec.size() + 2);
	}
};

Jak chcesz dodawać konkretne wartości, ustaw aby metoda add przyjmowała parametry int i zamiast resize() użyj push_back().

2

Zamiast niepoprawnej funkcji dodaj użyj std::accumulate z <algorithm>.

int sum = accumulate(begin(vecMain), end(vecMain), 0);
0

Ten kod nie powinien się skompilować. Problem jest z funkcją dodaj (pomijam inne szczegóły jak np. brakujące nagłówki). Po pierwsze deklarujesz wartość zwracaną jako void a potem jednak chcesz coś zwrócić return suma[0];.
Druga sprawa to dodawanie: wektor1.sVec[0]+wektor1.sVec[1]. Co jeśli wektor1 będzie miał mniej niż dwa elementy? To trzeba sprawdzić. Wiem, że jest to testowy kod ale im wcześniej wyrobisz sobie takie nawyki tym lepiej.
Zakładam, że jednak chcesz poznać wartość dodanych elementów. Ale zwracanie je używając typu vector jest nieco przekombinowane. Prościej jest tak:

int dodaj(const Vec &wektor1) {
    if (wektor1.sVec.size() > 1) {
        return wektor1.sVec[0] + wektor1.sVec[1];
    } else {
        // obsluga wyjatku
        throw runtime_error("Wymagane co najmniej dwa elementy");
    }
}

Kolejna rzecz, funkcja dodaj jest wołana na samym końcu - nie masz możliwości zobaczyć rezultatu.

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