Napisałem sortowanie przez wstawianie (plus porównywanie ze sobą elementów z tablicy), Niema tu main() ani nagłówków. Oto kod:
int l; // male L: licznik wstawiajacy liczby do tablicy int j; // licznik petli sortujacej int n; // ilosc elementow int p; // element sortowanego ciagu int i; // zapomnialem int lp; // liczenie porownan cout << "Ile elementow do posortowania? "; cin >> n; int a['n']; // tablica n-elementowa cout << "\n"; for (l=0; l<n; l++) { cout << (l+1) << "z" << n << ": "; cin >> a[l]; } cout << "\nPorownania:\n"; // Zamiast j=2 ustawilem na j=0. // Gdyby j=2, to dla dwoch elementow nie posortuje for (j=1; j<n; j++) { p = a[j]; i = j-1; // Zamiast i>0 ustawilem na j>=0 while ((i>=0) && (a[i]>p)) { a[i+1]=a[i]; i=i-1; } a[i+1]=p; // Pierwsze porownanie if (a[i] < a[j]) { lp++; cout << a[i] << " < " << a[j] << endl; } else if (a[i] > a[j]) { lp++; cout << a[i] << " > " << a[j] << endl; } else { lp++; cout << a[i] << " = " << a[j] << endl; } // Drugie porownanie if (a[j] < p) { lp++; cout << a[j] << " < " << p << endl; } else if (a[j] > p) { lp++; cout << a[j] << " > " << p << endl; } else { lp++; cout << a[j] << " = " << p << endl; } } cout << "---------------------" << endl; cout << "\nPo sortowaniu:" << endl; for (int x=0; x<n; x++) { cout << a[x]; cout << endl; } getch(); return 0;
Program działa. Teraz napiszę poniżej co robię a co mi pokazuje - od razu dodam że pokazuje mi baaardzo duże liczby których teoretycznie (niewiem jak to praktycznie) - nie powinno być. Dobra.
Przykład 1:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 5
3z3: -1
Enter.
Pojawia się taki tekścik:
Porownania:
1306224 > 9
9 > 5
1306224 > 9
9 > -1
Przykład 2:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 4
3z3: 8
Enter.
Pojawia się taki tekścik:
Porownania:
1306224 > 9
9 > 4
4 < 9
9 > 8
Przykład 3:
Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować:
1z3: 9
2z3: 15
3z3: 7
Enter.
Pojawia się taki tekścik:
Porownania:
9 < 15
15 = 15
1306224 > 15
15 > 7
Pytanie:
Dlaczego w porównaniach pokazuje mi te duże liczby, kiedy to ja ich nie wpisywałem?
Czy jest jakiś sposób na wykluczenie takich problemów?