• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie - skopiowanie danych z jednej tablicy do drugiej

Object Storage Arubacloud
0 głosów
830 wizyt
pytanie zadane 12 stycznia 2017 w C i C++ przez rubiikk Obywatel (1,900 p.)

Cześć,

Zrobiłem sobie sortowanie metodą quicksort do dynamicznej tablicy, gdzie użytkownik na samym początku podaje rozmiar tablicy. Chcę teraz zrobić tak, że podprogram sortujący nie będzie modyfikował źródłowej tablicy, tylko wpisywał uporządkowane wartości do nowej tablicy o tym samym wymiarze.

Mógłby ktoś podsunąć, jak to zrobić? Część mojego kodu:

void display(int a[], int size)
{
	int i;

	//#pragma omp parallel for
	for (i = 0; i < size; i++)
	{
		std::cout << a[i] << " ";
	}

}

int main()
{
	int size;
	std::cout << "Podaj rozmiar tablicy: ";
	std::cin >> size;

	int *a = new int[size];

	//losowanie wartosci i zapisanie do tablicy
	srand(time(NULL));
	for (int i = 0; i < size; i++)
	{
		a[i] = rand();
	}

	//Wyświetlanie tablicy
	std::cout << "\n\nLiczby z tablicy: \n";
	for (int i = 0; i < size; i++)
	{
		std::cout << a[i] << " ";
	}
	Sleep(1000);
	system("cls");

	clock_t start1 = clock();
	szybkieszeregowo(tmp, 0, size - 1);
	
	display(tmp, size);
	
	std::cout << "\n\nCzas sortowania metoda szeregowo: " << clock() - start1 << " milisekund.\n";
	Sleep(1000);
	
	delete[] a;

	return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 12 stycznia 2017 przez Dexterim Dyskutant (8,370 p.)
Możesz stworzyć nowa funkcje która zwraca wskaznik na tablice a przekazujesz jej adres tablicy do posortowania potem w funkcji tworzysz nowa tablice na bazie przekazanej i dla niej stosujesz quicksort
komentarz 12 stycznia 2017 przez rubiikk Obywatel (1,900 p.)

Brzmi skomplikowanie. Chodzi o coś takiego?

int *druga_tablica()
{
	int *a = new int[size];

	//losowanie wartosci i zapisanie do tablicy
	srand(time(NULL));
	for (int i = 0; i < size; i++)
	{
		a[i] = rand();
	}

	int *druga_tablica = new int[size];

	return a;
}

 

komentarz 12 stycznia 2017 przez Dexterim Dyskutant (8,370 p.)

Nie. Chodziło Ci o otrzymanie tablicy posortowanej tablicy bez zmiany tej ktora masz wiec

int* sortowanie(int* tab,int rozmiar){
        int posortowana = new int[rozmiar];
        // dalej przypisanie do tej tablicy wartosci z tab no i pozniej uzycie quciksort
       return posortowana;
}

tylko w funkcji mian musisz uzyc delete

komentarz 13 stycznia 2017 przez rubiikk Obywatel (1,900 p.)
Hmmm.... Nie rozumiem jeszcze tego komentarza. Okej - inicjuję nową tablicę, czyli teraz powinienem przypisać jeden wskaźnik tablicy do drugiej?
komentarz 13 stycznia 2017 przez Dexterim Dyskutant (8,370 p.)

Nie musisz przypisywać wskaźników do siebie a jedynie poszczególne elementy tzn.

int* sortowanie(const int* tab,int rozmiar){ // mozna ewentualnie doodac const bo nie zmieniamy tablicy
        int *posortowana = new int[rozmiar];
        for(int i = 0 ; i< rozmiar;i++)
                  posortowana[i]=tab[i];
     // pozniej ja sortujesz i tyle
       return posortowana;
}

 

Podobne pytania

+1 głos
1 odpowiedź 1,486 wizyt
0 głosów
1 odpowiedź 547 wizyt
pytanie zadane 3 listopada 2022 w C# przez JoannS Początkujący (250 p.)
+1 głos
1 odpowiedź 215 wizyt
pytanie zadane 15 lutego 2022 w C# przez chrystian Gaduła (4,780 p.)

92,555 zapytań

141,402 odpowiedzi

319,544 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...