Cześć!
Od paru godzin próbuję rozwiąć to zadanie -> https://pl.spoj.com/problems/MWPZ06H/
Problem polega na tym, że program zwraca wyniki poprawnie, ale na końcu tuż przed zakończeniem programu wypisuje się jakaś około 10 cyfrowa ujemna liczba, domyślam się, że problemem może być sformułowanie kodu między 89 a 99 linijką. Może jeszcze wytłumaczę mój kod bo jest dość dziwnie napisany(tak mi się wydaje).
Program działa mniej więcej w taki sposób(pominę te oczywiste instrukcje): Funkcja sortowanie_babelkowe sortuje w taki sposob liczby, że znajduje pierwszą największą i ustawia ją w szufladce zerowej, a reszte liczb sortuje porządku rosnącym(8-40 linia kodu), następnie sprawdza czy są jeszcze jakieś liczby równej tej w zerowej szufladce i zamienia miejscami tą kolejną liczbę największą z pierwszą szufladką z liczbą inną niż ta największa(85-95 linia kodu), następnie funkca kolejne_sortowanie_babelkowe sortuje wszystkie liczby które nie są tymi największymi(43-58 linia)
Oto kod
#include <iostream>
using namespace std;
int ile;
int k = 1;
int p;
void sortowanie_babelkowe(int *tab, int ile)
{
for(int i = 0; i < ile; i ++)
{
if(i==(ile-1))
{
for(int j = ile - 1; j >= 1; j--)
{
if(tab[j] > tab[j-1])
{
int bufor;
bufor = tab[j-1];
tab[j-1] = tab[j];
tab[j] = bufor;
}
}
}
else
{
for(int j = ile - 1; j >= 2; j --)
{
if(tab[j] < tab[j-1])
{
int bufor;
bufor = tab[j-1];
tab[j-1] = tab[j];
tab[j] = bufor;
}
}
}
}
}
void kolejne_sortowanie_babelkowe(int *tab, int ile)
{
for(int i = 1; i < ile; i ++)
{
for(int j = ile - 1; j >= k+1; j --)
{
if(tab[j] < tab[j-1])
{
int bufor;
bufor = tab[j-1];
tab[j-1] = tab[j];
tab[j] = bufor;
}
}
}
}
int main()
{
cin >> p;
for(int a = 0; a < p; a ++)
{
cin >> ile;
int * tablica = new int [ile];
for(int i = 0; i < ile; i ++)
{
cin >> tablica[i];
}
sortowanie_babelkowe(tablica, ile);
/*
for(int i = 0; i < ile; i ++)
{
cout << tablica[i] << " ";
}
*/
for(int i = 1; i < ile; i ++)
{
if(tablica[0]==tablica[i])
{
int m;
m = tablica[i];
tablica[i] = tablica[k];
tablica[k] = m;
k++;
}
}
//cout << endl;
/*
for(int i = 0; i < ile; i ++)
{
cout << tablica[i] << " ";
}
*/
kolejne_sortowanie_babelkowe(tablica, ile);
for(int i = 0; i < ile; i ++)
{
cout << tablica[i] << " ";
}
cout << endl;
delete [] tablica;
}
return 0;
}
Z góry dzięki za pomoc!