Jak przekazać tablicę dynamiczną wraz z wartościami z jednej funkcji do drugiej?

0

Cześć, piszę program, który wypełnia tablice liczbami losowymi. Zakres liczb oraz rozmiar tablicy podaje użytkownik. I to działa. Problem pojawia się w momencie, gdy mam stworzyć dodatkowe funkcje, które będą wyliczały np średnią czy liczbę elementów nieparzystych i ich sumę etc. I nie bardzo wiem, jak do przykładowej funkcji Suma przekazać tablicę dynamiczną wraz z wartościami z funkcji WypiszTablice. Problem pewnie banalny, ale wiecie, początki. Z góry dzięki.

#include <iostream>
#include <cstdlib>
#include <ctime>

void WypiszTablice(int Rozmiar, int Max, int Min);
int Suma(int *tab[], int Rozmiar);

int main()
{
	int Min;
	int Max;
	int Rozmiar;

	std::cout << "Wygeneruj losowe liczby z zakresu od: ";
	std::cin >> Min;
	std::cout << " do: ";
	std::cin >> Max;
	std::cout << "Podaj rozmiar tablicy (max 100): ";
	std::cin >> Rozmiar;

	WypiszTablice(Rozmiar, Max, Min);

	return 0;
}

void WypiszTablice(int Rozmiar, int Max, int Min)
{
	srand(time(NULL));
	int *tab = new int[Rozmiar];

	for (int i = 0; i < Rozmiar; i++)
	{	
		tab[i] = rand() % Max + Min;
	}

	for (int j = 0; j < Rozmiar; j++)
	{
		std::cout << tab[j] << std::endl;
	}

	delete[] tab;
	return;
}

int Suma(int *tab[], int Rozmiar)
{
	int Suma = 0;
	for (int i = 0; i < Rozmiar; i++)
	{
		Suma += *tab[i];
	}
	return Suma;
}
 
0
  1. Wypisztablice powinno mieć dodatkowy argument
int *tab
  1. nie powinno być w tej funkcji operaji przydzielajacej pamięć oraz zwalniającej tablicę
    3)do funkcji Suma powinno sie raczej przekazać int *tab
  2. nie zwalniasz tablicy w mainie

To tak na szybko

1
 #include <iostream>

int max(int nums[], std::size_t size)
{
    int max_value{ nums[0] };
    for (std::size_t i{ 1 }; i < size; ++i) {
        if (max_value < nums[i]) {
            max_value = nums[i];
        }
    }
    return max_value;
}

void fill_my_arr(int arr[], std::size_t size)
{

}

void print(int arr[], std::size_t size)
{

}

int main()
{
    std::size_t my_size{};
    std::cin >> my_size;
    int *my_arr = new int[my_size];
    fill_my_arr(my_arr, my_size);
    print(my_arr, my_size);
    std::cout << max(my_arr, my_size) << '\n';
    delete[] my_arr;
}

Zamiast babrać się w C++ z gołymi new i delete skorzystaj z std::vector.
Dlaczego nikt nie odpowiada w moim wątku?

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