Skocz do zawartości

Wskaźniki


Miszcz

Rekomendowane odpowiedzi

Witam.

Mam do napisania taki program, w którym muszę za alokować pamięć na tablicę jednowymiarową i wpisać tam liczby. Dalej muszę to przesortować zawartość i wyświetlić tę tablicę PRZED i po sortowaniu. No i tu mam problem jak wyświetlić PRZED sortowaniem, tę samą tablicę(wskaźników czy czego:))? Czy da się to zrobić bez używania drugiej takiej samej tablicy?

Odnośnik do komentarza
Udostępnij na innych stronach

Normalnie: wyswietlasz, sortujesz, wyswietlasz. Wystarczy jedna tablica. W czym ma to byc?

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi o to, ze w zadaniu jest napisane, ze na koncu (przy wychodzeniu) jedna funkcja ma wyswietlic tablice przed i po sortowaniu :)

 

 

Jeszcze z pytanie z innej beczki jak utworzyc tablice, której elementami sa wskazniki na elementy innej tablicy?.

 

Pisze w C\C++

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi o to, że w zadaniu jest napisane, że na końcu (przy wychodzeniu) jedna funkcja ma wyświetlić tablicę przed i po sortowaniu :)

No to musisz zrobić kopię tablicy.

 

 

Jeszcze z pytanie z innej beczki jak utworzyć tablicę, której elementami są wskaźniki na elementy innej tablicy?.

Hmmm... wskaźnik na tablicę (właściwie to na jej bazę)? Jeśli tak to w ten sposób.

#include <cstdlib>
#include <iostream>

int main() {

   int array[] = {4, 5, 6};
   std::cout<<"Tablica:\n";
   for(int i=0; i<3; i++){
       std::cout<<array[i]<<"\n";
   }

   int *array2 = array;
   int *temp = array;
   std::cout<<"\nWskaznik na tablice:\n";
   for(int i=0; i<3; i++){
       std::cout<<(*array2)<<"\n";
       array2++;
   }
   array2=temp; //wraca do adresu pierwszego elementu

   array[1] = 10; //zmienia wartosc drugiego elementu

   std::cout<<"\nWskaznik na tablice po zmianie wartości:\n";
   for(int i=0; i<3; i++){
       std::cout<<(*array2)<<"\n";
       array2++;
   }
   return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

No to musisz zrobic kopie tablicy.

 

 

 

Hmmm... wskaznik na tablice (wlasciwie to na jej baze)? Jesli tak to w ten sposób.

#include <cstdlib>
#include <iostream>

int main() {

   int array[] = {4, 5, 6};
   std::cout<<"Tablica:\n";
   for(int i=0; i<3; i++){
       std::cout<<array[i]<<"\n";
   }

   int *array2 = array;
   int *temp = array;
   std::cout<<"\nWskaznik na tablice:\n";
   for(int i=0; i<3; i++){
       std::cout<<(*array2)<<"\n";
       array2++;
   }
   array2=temp; //wraca do adresu pierwszego elementu

   array[1] = 10; //zmienia wartosc drugiego elementu

   std::cout<<"\nWskaznik na tablice po zmianie wartosci:\n";
   for(int i=0; i<3; i++){
       std::cout<<(*array2)<<"\n";
       array2++;
   }
   return 0;
}

 

 

Ok rozwiazanie jest w porzadku dla zwyklych tablic, ale u mnie druga jest tez tablica wskazników i jak sortuje pierwsza to zmienia mi sie druga.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...