Demigodd
@Demigodd

Как передать массив в функцию и вернуть исходный массив, после сортировки?

spoiler
#include <iostream>
#include <cstdlib>
#include <ctime>

void SourceArray(int* array, int n);
void PrintArray(int* array, int n);

void BubbleSort(int array[], int size) {
	for(int i = 1; i < size; ++i)
    {
    	for(int r = 0; r < size - i; r++)
    	{
    		if(array[r] > array[r + 1])
    		{
    			int temp = array[r];
    			array[r] = array[r + 1];
    			array[r + 1] = temp;
    		}
    	}
    }
    
    std::cout << "Bubble Sorted Array1: ";
    PrintArray(array, size);
}

int main() {
    srand(time(NULL));
    
    int size;
    std::cout << "Array Size: ";
    std::cin >> size;
    
    int array[size];
    //Создаем Массив с рандомными элементами
    for(int i = 0; i < size; ++i)
    {
        array[i] = (rand() % 100) + 1;
    }
    
    std::cout << "Source Array: ";
    SourceArray(array, size);
    
    //Передаем Массив в Функцию
    BubbleSort(array, size);
    
    //Как сделать, что бы тут был исходный массив, а не сортированный ?
    PrintArray(array, size);
    
    return 0;
}

void SourceArray(int* array, int n) {
    for(int i = 0; i < n; ++i) {
    	std::cout << array[i] << " ";
    }
    std::cout << "\n\n";
}

void PrintArray(int* array, int n) {
   for(int i = 0; i < n; ++i) {
    	std::cout << array[i] << " ";
    }
    std::cout << "\n";
}


Не могу понять как сделать, что бы массив был локальным и после сортировки он исчез, и каждый раз при использований этого массива снова в main. Вывод был Начальный генерированный массив.
  • Вопрос задан
  • 274 просмотра
Решения вопроса 2
Ivanq
@Ivanq
Знаю php, js, html, css
Во-первых, не нужно разделять PrintArray и SourceArray. Код у них один и тот же.

Во-вторых, массив передается в BubbleSort по указателю, то есть, если BubbleSort меняет массив, то он меняется вообще.

Вам нужно перед вызовом BubbleSort скопировать массив, и в функцию передать копию. Например:

int array_copy[size];
memcpy(array_copy, array, size);
Ответ написан
Комментировать
@assembled
Если я тебя правильно понял:
создаёшь новый дин. массив, копируешь в него значения, сортируешь его, выводишь, потом освобождаешь память, и всё.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы