Cześć,
Mam takie zadanie i nie mogę sobie z nim poradzić:
Korzystając ze standardowego wzoru projektu C++ napisz program sortujący wylosowany zestaw cyfr z zakresu 1-99 metodą sortowania przez wybieranie. Program powinien zapytać o to ile elementów ma wylosować oraz wyświetlić je na ekranie. Program powinien również wyświetlać wszystkie kroki pośrednie działania algorytmu jak poniżej:
Input 43 41 41 1 56 97 55 41
41 43| 41 1 56 97 55 41
41 41 43| 1 56 97 55 41
41 41 1 43| 56 97 55 41
41 41 1 43 56| 97 55 41
41 41 1 43 56 97| 55 41
41 41 1 43 56 55 97| 41
41 41 1 43 56 55 41 97|
Result 41 41 1 43 56 55 41 97
Mam coś takiego, ale to nie do końca działa tak jak powinno.
Nie wypisuje kroków obliczeń.
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
#include <vector>
using namespace std;
const int N = 20; // Liczebność zbioru.
// Program główny
//---------------
int main()
{
int d[N], i, j, pmin, ilosc;
cout << "Podaj ilosc:";
cin >> ilosc;
// Najpierw wypełniamy tablicę d[] liczbami pseudolosowymi
// a następnie wyświetlamy jej zawartość
cout << "ZBIOR: \n\n";
srand((unsigned)time(NULL));
for (i = 0; i < ilosc; i++) d[i] = rand() % 100;
for (i = 0; i < ilosc; i++) cout << setw(4) << d[i];
cout << endl;
// Sortujemy
for (j = 0; j < ilosc - 1; j++)
{
pmin = j;
for (i = j + 1; i < ilosc; i++)
if (d[i] < d[pmin]) pmin = i;
swap(d[pmin], d[j]);
}
// Wyświetlamy wynik sortowania
cout << "\nPo sortowaniu:\n\n";
for (i = 0; i < ilosc; i++) cout << setw(4) << d[i];
cout << endl;
return 0;
}