Dzień dobry, otrzymałem dziwny problem. Program nie przypisuje poprawnie wartości tablicy pod danym indeksem, jednak kiedy przypiszę do jakiejś zmiennej tę wartość i jej użyję wszystko działa poprawnie.
Dokładniej:
1) tablica[index + 1] = tablica[badanyIndex]; // przypisuje niepoprawnie
2) int wstawianyElement = tablica[badanyIndex];
tablica[index + 1] = wstawianyElement // wszystko działa poprawnie.
Z góry dziękuję za pomoc.
// program nie działający poprawnie:
#include <iostream>
using namespace std;
void insertionSort(int tablica[], int dlugoscTablicy) {
for (int badanyIndex = 1; badanyIndex < dlugoscTablicy; badanyIndex++) {
int index = badanyIndex - 1;
while(tablica[index] > tablica[badanyIndex] && index >= 0) {
tablica [index + 1] = tablica[index];
index--;
}
tablica[index + 1] = tablica[badanyIndex];
}
}
int main()
{
int dlugoscTablicy = 6;
int tablica[dlugoscTablicy] = {5, 4, 2, 3, 1, 3};
for (int i = 0; i < dlugoscTablicy; i++) {
cout << tablica[i] << " ";
}
cout << endl;
insertionSort(tablica, dlugoscTablicy);
for (int i = 0; i < dlugoscTablicy; i++) {
cout << tablica[i] << " ";
}
return 0;
}
// kod działający poprawnie:
#include <iostream>
using namespace std;
void insertionSort(int tablica[], int dlugoscTablicy) {
for (int badanyIndex = 1; badanyIndex < dlugoscTablicy; badanyIndex++) {
int index = badanyIndex - 1;
int wstawianyElement = tablica[badanyIndex];
while(tablica[index] > wstawianyElement && index >= 0) {
tablica [index + 1] = tablica[index];
index--;
}
tablica[index + 1] = wstawianyElement;
}
}
int main()
{
int dlugoscTablicy = 6;
int tablica[dlugoscTablicy] = {5, 4, 2, 3, 1, 3};
for (int i = 0; i < dlugoscTablicy; i++) {
cout << tablica[i] << " ";
}
cout << endl;
insertionSort(tablica, dlugoscTablicy);
for (int i = 0; i < dlugoscTablicy; i++) {
cout << tablica[i] << " ";
}
return 0;
}