Dzień dobry
Rozwiązuję zadanie i potrzebuje się dowiedzieć jak stworzyć kopię wartości przekazywanej przez wskaźnik.
To znaczy (dla jasności)- nie kopię samego wskaźnika, czyli adresu w pamięci komputera, tylko wartości- w typ przypadku całej tablicy wartości, na jaką on wskazuje.
- chciałam dodać skopiowaną tablicę do stworzonego wcześniej wektora tablic typu int tak, żeby nie zachodziły w niej już żadne zmiany, kiedy będę zmieniać wartość... oryginału od którego powstała kopia tablicy przekazanego do funkcji przez wskaźnik.
Mam nadzieję, że istnieje w ogóle taki sposób ;-)
*jeśli komuś chętnemu do udzielenia odpowiedzi pomogłoby udostępnienie kodu programu, to proszę napisać- dodam w komentarzu.
Z góry dziękuję za odpowiedź!
Chciałam stworzyć funkcję, która przyjmuje wszystkie permutacje podanej tablicy int, a później poprzez program główny użyć tej funkcji i wypisać na ekranie.
kod:
//generowaie permutacji tablicy int
#include <iostream>
#include <vector>
using namespace std;
void permutacje(int* a, int start, vector<int[]> results, int length);
vector <int[]> permutacje(int a[], int length)
{
vector <int[]> results;
permutacje(a, 0, results, length);
return results;
///Bede zamieniac mejscami liczbe z jej sasiadem, lub z sama soba (w drugim przypadku wyglad tabicy sie nie zmienia).
///Potem komputer ma wykonac zamiane odwrotna i przywrócic poprzedni wyglad tablicy-
/// po to, zeby nastepnie od punktu startowego mógl dokonywac kolejnych zmian.
void permutacje(int a[], int start, vector<int[]> results, int length){
//kiedy (start) jest wiekszy od dlugosci tablicy a, wtedy zakoncz.
//wtedy dodaj 'results' do koncowej tablicy permutacji
///int length = sizeof(a[])/sizeof(int);
if (start >= length){
results.insert(*a.clone());//dla otrzymania prawidlowych rezultatów trzeba skopiowac a.
}else{//(jesli to nie koniec)
//najpierw zrobic zamiane. Trzeba przejsc przez wszystkie przyjete wartosci w tablicy, zeby zamienic je z (ta pierwsza).
//potem z druga, potem z trzecia i z nastepna.
for (int i=0; i<length; i++){
swap(a[start], a[i]);//uzywam parametru start i zamieniam go z i.
permutacje(a, start+1, results, length); ///
swap(a[start], a[i]); }//zamiana odwrotna
}
}
int main()
{
int a[3] = {1, 2, 3};
int length = sizeof(a)/sizeof(int);
cout<<permutacje(a, length)<<endl;
return 0;
}
}