MarceloFerro 2018-06-29 11:01:14 +1
Cześć Wam! Próbuję przepisać na C# program wypisujący permutacje danego stringa
np. "ABC" na podstawie algorytmu pokazanego na stronie:
https://www.geeksforgeeks.org/write-a-c-program-to-print-all-permutations-of-a-given-string/


Tutaj mój kod:
https://paste.ofcode.org/38rZqSVc5bRCZ2JswxdThJ7

Niestety problem pojawił się gdy chciałem podmieniać pojedyncze elementy stringu, np. "a[l]" z użyciem "ref"

Komunikat w kompilatorze: "Właściwości, indeksatora ani dynamicznego wyrażenia dostępu do elementu członkowskiego nie można przekazać jako parametru out ani ref."

#naukaprogramowania #csharp
zapomnialam_loginu 2018-06-29 11:35:21 +2
@MarceloFerro: problemem jest to, że próbujesz pracować ze stringiem jak z tablicą znaków, zastąp string char[] i powinno być dobrze, tu masz też wątek ze stacka w tórym jest chyba wszystko czego potrzebujesz : https://stackoverflow.com/questions/756055/listing-all-permutations-of-a-string-integer
zapomnialam_loginu 2018-06-29 11:53:08 +2
@MarceloFerro: super :) pamiętaj, że w .Net strinngi są niezmienne (immutable) więc każda zmiana to tak naprawdę tworzenie nowego obiektu, https://msdn.microsoft.com/pl-pl/library/system.string%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396#Immutability - tutaj masz trochę więcej o tym, może Ci się przydać na przyszlość jesli planujesz coś więcej robić w .Net
MarceloFerro [OP] 2018-06-29 11:34:55 +0
MarceloFerro [OP] 2018-06-29 11:37:19 +0
@zapomnialam_loginu: Dziękuję bardzo!
MarceloFerro [OP] 2018-06-29 11:40:35 +0
@zapomnialam_loginu: Działa!

Dopisałem:
string moj1 = "ABC";
char[] moj = moj1.ToCharArray();

oraz zmieniłem argumenty funkcji ze string na char[]