Jak przekazać vector wygenerowany w jednej funkcji do drugiej funkcji?

2018-10-30 19:44
0

Dzień dobry. Chciałbym zapytać, jak w takim kodzie, jak poniżej przekazać wygenerowany vector z funkcji generuj() do funkcji print. Nie mam zielonego pojęcia, jak to zrobić i bardzo proszę o pomoc.


#include "pch.h"
#include<array>
#include<iostream>
#include<vector>

using namespace std;
//funkcje do programow

void generuj(vector<int> v)
{
    int liczby;
    cout << "Podaj ile chcesz wygenerowac liczb: ";
    cin >> liczby;
    for (int i = 0; i < liczby; i++)
    {
        v.push_back(i);

    }
}

void print(vector<int> v)
{   
    generuj(v);

    cout << "[";
    for (int i = 0; i < v[i]; i++)
    {
        v.push_back(i);
        cout << v[i]<< ", ";
    }
    cout << "]";
    cout << endl;

void zadanie2()
{
    vector<int> v;
        print(v);

}

}

int main()
{

    zadanie2();

}
edytowany 1x, ostatnio: furious programming, 2018-10-30 20:06

Pozostało 580 znaków

2018-10-30 19:45
kq
0

Instrukcją return. Funkcja musi deklarować zwracany typ. Poczytaj o funkcjach w Twoim podręczniku/tutorialu/książce.


Pozostało 580 znaków

2018-10-30 20:11

Trzymając się Twojego sposobu pisania można to osiągnąć np.:

#include <iostream>
#include <vector>

using namespace std;

vector<int> generate()
{
    vector<int> v;
    int liczby;
    cout << "Podaj ile chcesz wygenerowac liczb: ";
    cin >> liczby;
    for (int i = 0; i < liczby; i++)
    {
        v.push_back(i);
    }
    return v;
}

void print(vector<int> v)
{
    cout << "[";
    for (unsigned int i = 0; i < v.size(); i++)
    {
        cout << v[i] << (i == v.size()-1 ? "" : ",");
    }
    cout << "]";
    cout << endl;
}

void zadanie2()
{
    vector<int> v = generate();
    print(v);
}

int main(void)
{
    zadanie2();

    return EXIT_SUCCESS;
}

Pozdrawiam.

Pozostało 580 znaków

2018-10-30 20:12
0

Dziękuje pięknie i gorąco pozdrawiam :)

Kliknij na akceptację (łapkę) przy moim poście jak możesz, będę wdzięczny :) - vxer 2018-10-30 20:14

Pozostało 580 znaków

2018-10-30 20:53
0

Ponieważ przekazanie parametru jest przez wartość zmiany zostaną utracone.
Powinno być przez referencję gdy w nim zmieniamy (koniecznie) i const referencję gdy np drukujemy (to drugie dla oszczędności)

To nie Java czy C# gdzie wszystko ponad typy proste jest przez referencję.

vector w funkcji print jest tylko wyświetlany, więc żadne zmiany nie są utracone, bo nic nie jest zmieniane. Sprawdzałem mój kod i działa poprawnie. - vxer 2018-10-30 21:07

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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