Tablica 2-wymiarowa [10-10], trzeba ją posortować w wierszach rosnąco, a potem wszystkie wiersze posortować ze względu na sumę w danym wierszu. np. 1 2 3 4 5 6 7 8 9 10 = 55 1 3 3 4 5 6 7 8 9 10 = 56 0 1 2 3 4 5 6 7 8 9 = 54 jak widać na przykładzie wszystko w wierszach jest posortowane, ale trzeba zamienić wiersze ze względu na sumę docelowo s = 54 s = 55 s = 56
W załączniku dodaję moje tymczasowe rozwiązanie (jest wszystko prócz zamieniana wierszy)
edit:
Zadanie w C++ :)
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Po pierwsze natychmiast wywalamy #include <conio.h>, i żartobliwie powiem: zabraniam Ci tego używać. To jest relikt z czasów dos'a i nie pozwala na uruchamianie programu poza windowsem i właśnie dosem. A tym samym wywalamy na końcu getch(). To też jest złe, bo jest z tej złej biblioteki.
Po drugie, main() powinien mieć typ int, przykładowo pod g++ nie da się skompilować void main().
Po trzecie brakuje #include <cstdlib>
Do sortowania tablicy wykorzystałem funkcję swap(object a, object b):
bool zmiana = false;
do {
zmiana = false;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (tab_suma[j] > tab_suma[j+1]) {
swap(tab[j],tab[j+1]);
swap(tab_suma[j],tab_suma[j+1]);
zmiana = true;
}
}
}
} while (zmiana==true);
cout << endl;
int s=0;
//wypisywanie posortowanej przez sume tablicy
for (int i = 0; i < 10; i++){
s=0;
for (int j = 0; j < 10; j++)
{
cout.width(5);
cout << tab[i][j];
s=s+tab[i][j];
if (j % 9 == 0 && j != 0)
{
cout << "\tsuma = " << s;
cout << endl;
}
}
}
Edit:
swap działa, ale do sortowania macierzy po wierszach tylko pod kompilatorem gcc. qsort i voilà, rozwiązanie w załączniku