Witam,
Czy ktoś z Was mógłby sprawdzić czy dobrze wykonałem 3 zadania, które znajdują się pdfie?
Wszystko polecenia wykonałem (tak, wszystko ma się odbywać w jednym programie), jednak nie jestem do końca pewien czy dobrze zrozumiałem treść poleceń.

Chodzi mi tylko o potwierdzenie poprawności napisanego programu bądź wskazanie nad czym powinienem jeszcze popracować.

Z góry dzięki za jakąkolwiek pomoc :)

#include <iostream>
#include <algorithm>



struct Element {
	int key;
};

void copyElementsDescending (int *array1, int *array2) {  
	int j = 2;
	for(int i = 0; i < 3; i++) {
		array2[j] = array1[i];
		j--;
	}
}

void sortByOrder(Element *list_array, int size) {  //Task 2
	int ccounter = 0; // comprasion counter
	int ecounter = 0; // exchange counter
	for(int i = 0; i < size - 1; i++) {
		int	min = i;
		for(int j = i; j < size; j++) {
			if(list_array[j].key < list_array[min].key) {
			   	min = j;
				ccounter++;
			}
		}
		if(min != i) {
			std::swap(list_array[min],list_array[i]);
		   	ecounter++;
		}
		ccounter++;
        for(int k = 0; k < size; k++) {

            std::cout << list_array[k].key << " ";

        }
        std::cout << "\n";
	}
	std::cout << "Comprasion counter: " << ccounter;
	std::cout << "\nExchange counter: " << ecounter << "\n";

}

void sortByInsertion(Element *list_array, int size) { //Task 3
	 int counter = 0;
	 for(int i = 1; i < size; i++) {
        int j = i;
        while(j > 0 && list_array[j].key < list_array[j-1].key) {
			std::swap(list_array[j], list_array[j - 1]);
            j--;
			counter++;
        }
        for(int k = 0; k < size; k++) {

            std::cout << list_array[k].key << " ";

        }
        std::cout << "\n";
	 }
	 std::cout << "Exchange counter: " << counter << "\n";
}

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

void printStructArray(Element *list_array, int size) {
	for(int i = 0; i < size; i++) {

		std::cout << list_array[i].key << " ";

	}
}



int main() {

	int A[3] = { 3, 2, 1 };
	int B[3];

	std::cout << "\nHello!\nThis is array A which elements have been copied to array B in descending order:\n";
	std::cout << "Array A : ";
    printArray(A,3);
	copyElementsDescending(A,B);
	std::cout << "\n";
	std::cout << "Array B : ";
  	printArray(B,3);
	std::cout << "\n";


	int length = 8;

	Element list_array2[length] = { {44}, {55}, {12}, {42}, {94}, {18}, {6}, {67} };
	Element list_array3[length] = { {44}, {55}, {12}, {42}, {94}, {18}, {6}, {67} };

	std::cout << "\nThis is task 2. Sorting by selection.";
	std::cout << "\nThis is array of struct elements before sorting : \n";
	printStructArray(list_array2,length);
	std::cout << "\n";
	sortByOrder(list_array2,length);
	std::cout << "This is an array of struct elements after sorting : \n";
	printStructArray(list_array2,length);
	std::cout << "\n";

	std::cout << "\nThis is task 3. Sorting by insertion.";
	std::cout << "\nThis is array of struct elements before sorting : \n";
	printStructArray(list_array3,length);
	std::cout << "\n";
	sortByInsertion(list_array3,length);
	std::cout << "This is an array of struct elements after sorting : \n";
	printStructArray(list_array3,length);
	std::cout << "\n\n\n\n";

    int length2 = 8;

	Element list_array4[length2] = { {94}, {67}, {55}, {44}, {42}, {18}, {12}, {6} };
	Element list_array5[length2] = { {94}, {67}, {55}, {44}, {42}, {18}, {12}, {6} };

	std::cout << "\nThis is task 2. Sorting by selection.";
	std::cout << "\nThis is array of struct elements before sorting : \n";
	printStructArray(list_array4,length2);
	std::cout << "\n";
	sortByOrder(list_array4,length);
	std::cout << "This is an array of struct elements after sorting : \n";
	printStructArray(list_array4,length2);
	std::cout << "\n";

	std::cout << "\nThis is task 3. Sorting by insertion.";
	std::cout << "\nThis is array of struct elements before sorting : \n";
	printStructArray(list_array5,length2);
	std::cout << "\n";
	sortByInsertion(list_array5,length2);
	std::cout << "This is an array of struct elements after sorting : \n";
	printStructArray(list_array5,length2);



	return 0;

}