Wpis z mikrobloga

#programowaniec
#programowanie
#jezykc
Wytłumaczyłby mi ktoś czemu nie działa mi sortowanie w tym programie. Byłbym bardzo wdzięczny.

#include
#define N 3
#define M 10
int main() {
int schowek = 0;

int tab[N][M] = {{-2, -1, 5, 10, 52, -64, 2, 3, 92, 87}, {-32, 15, 2, -6, 81, 23, 45, 13, 18, 95}, {-15, 62, 3, 42, 98, -54, 9, 81, 72, -93}};
for(int i = 0; i < N; i++){
for( int j = 0; j < M; j++){
printf("%d, ", tab[i][j]);
}
printf("\n");
}
printf("SORTOWANIE\n");
for(int k = 0; k < N; k++){
for(int l = 0; l < M; l++){
if(tab[k][l+1] < tab[k][l]){
schowek = tab[k][l];
tab[k][l] = tab[k][l+1];
tab[k][l+1] = schowek;
}
}
}


return 0;
}
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zwei: sortuje liczby w tabeli (macierzy), chciałbym, żeby w każdym wierszu były posortowane rosnąco, nie rozumiem samego etapu sortowania w warunku mam że jeśli element w tabeli o jeden większy jest mniejszy to chciałbym aby zamieniły się miejscami i wykonywały to do momentu aż osiągnę cel
  • Odpowiedz
@wojak142 primo, wypisujesz macierz przed sortowaniem więc skąd wiesz że nie działa. Secundo, ten kod na pewno niczego nie sortuje. Tertio, zdefiniuj porządek w macierzy (tzn. w jaki sposób ma sortować).
  • Odpowiedz
  • 2
@wojak142 czyli sortowanie bąbelkowe (ano, tak się nazywa niezależnie od posiadania lub nie, bąbelka :)). Proponuję wkleić na stronę gdzie widać formatowanie, bo to się czyta delikatnie mówiąc bardzo źle. Póki co nie wiem dlaczego masz trzy tablice. Czy liczby mają być sortowane w obrębie całości czy tylko w tych grupach dziesieciu elementów.

Edit, ok przeczytałem. Sortujesz całość. Metoda jest ok, choć mało optymalna. Jeśli to w celu nauki, to co
  • Odpowiedz
  • 1
@wojak142 a. No to faktycznie brak jednej pętli. Przykład, niech wiersz ma: 6 4 3 5
Po przejsciu petli bedzie: 4 3 5 6 (jeśli dobrze w głowie skompilowalem ;)) Wpisz sobie proste dane do tablicy i zobacz co się dzieje. Wypisz też może zawartość po sortowaniu.
  • Odpowiedz
@wojak142: sortowanie bombelkowe wymaga n iteracji przez m elementów a ty masz jeszcze z macierzy. Musisz mieć 3 pętle.
W ogóle to radzę zrobić funkcję mySort, która przyjmie adres tablicy do posortowania oraz liczbę elementów w tej tablicy. wywołasz tą funkcję 3 razy dla każdego wiersza macierzy. Kod będzie 20.3 razy łatwiejszy do zrozumienia.
  • Odpowiedz