Dzień dobry! Jednym z elementów mojego programu ma być sortowanie malejące tablicy 2D kolumnami. Oto fragment kodu, o który mi się rozchodzi. Program się kompiluje jednakże wartości zwracane po sortowaniu przynajmniej w jednym wierszu są nieprawidłowe, przede wszystkim przy wartościach ujemnych i zerze (elementami tablicy są liczby z przedziału <-20, 19>.
Sortowanie ma postać np:
przed:
5 4 6
-7 8 2
1 2 -1
po:
5 8 6
1 4 2
-7 2 -1
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<ctime>
using namespace std;
void wypelnienie(int tab[5][5]){
srand(time(0));
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
{
tab[i][j] = -20 + rand() % (88 + 19);
}
}
void wypisanie(int tab[5][5])
{
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
cout << tab[i][j] << "\t";
}
cout << endl;
}
}
void sortowanie(int tab[5][5]){
int i, j, k, temp;
for (j = 0; j<5; j++)
{
for (k = 0; k<4; k++)
{
for (i = 0; i<5; i++)
{
if (tab[i][j]<tab[i + 1][j])
{
temp = tab[i][j];
tab[i][j] = tab[i + 1][j];
tab[i + 1][j] = temp;
}
}
}
}
}
int main(void){
int tab[5][5];
wypelnienie(tab);
wypisanie(tab);
cout << endl;
sortowanie(tab);
wypisanie(tab);
system("Pause");
return 0;
}