tablica jako parametr procedury/ procedura zwraca tablicę

0

Witam.
Napisałem taki kawałek kodu

	int powtorzenia(int tab[5])
		{
			int t[3]={0}; 
			if(tab[0]==tab[1]) 
                       {
                       [...]

                       	}
							
			return t[]; 
		}

Niestety kompilator nie chce zaakceptować takiego rozwiązania gdyż: expected primary-expression before ']' token
Pytanie brzmi, czy jest możliwe zwrócenie tablicy z procedury?

Oraz pytanie drugie. Kod wygląda tak:

 
int k1=0;
[...]
k1=czy_kolor(tab1k[]);

Oczywiście to jest w int man i oczywiście procedura czy_kolor istnieje.
Kompilator ma te same zarzuty co w poprzednim przypadku, czyli expected primary-expression before ']' token.
Da się to zrobić w C++?

3

Jest std::array, ale zwracanie tablicy to prawdopodobnie zły pomysł.

return t[] nie ma żadnego sensu w C++ i nie powinno się kompilowac

3

Jedno z:
1.

void powtorzenia(int tab[],int t[]) // t[] trzeba wcześniej przygotować
  {
   
  }
int *powtorzenia(int tab[]) // t[] jest statyczna więc przy wielowątkowości to rozwiązanie daje ciała
  {
   static int t[3]={0};
   ...
   return t;
  }
int *powtorzenia(int tab[]) // bardzo niestabilne ze względu na brak kontroli - wycieki pamięci - murowane
  {
   int *t=new int[3];
   ...
   return t;
  }
vector<int> powtorzenia(int tab[]) // używasz standardów c++ jak człowiek
  {
   vector<int> t(3);
   ...
   return t;
  }
0

Wielkie dzięki za pomoc i to bardzo szybką.
Muszę założyć konto żeby móc dawać łapki w górę.

0

Chciałem jeszcze tylko powiedzieć, że wciąż pozostaje drugie pytanie czyli jak uruchomić procedurę której podaję jako parametr tablicę.
w int main wpisuję nazwę procedury, w nawiasie podaję tablicę na której chcę przeprowadzić obliczenia i zawsze kompilator ma z tym problemy. Na przykład tutaj chcę przeprowadzić operację na każdym elemencie każdej z tych tablic.

 	for(int i=0;i<5;i++)  
			{	
				int tab1z[i]=zmiana(tab1z2[i]);
				int tab2z[i]=zmiana(tab2z2[i]);				
			}

albo:
k1=czy_kolor(tab1k[]);
Gdzie procedura ma przekazać do zmiennej k1 informacje czy karty gracza pierwszego są w tym samym kolorze. A wolę to zrobić na procedurach bo, graczy jest dwóch.
Zawsze jest ten sam komunikat:
expected primary-expression before ']' token

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