Avatar
Levin
Člen
Avatar
Levin:

Ahoj, mám funkci

int bubleSort(int *poleKusu, int a){
int i, j;
    for(i = 0; i < a - 1; i++)
    {
        for(j = 0; j < a - i - 1; j++){

            if(poleKusu[j+1] < poleKusu[j]){

                int tmp = poleKusu[j + 1];

                poleKusu[j + 1] = poleKusu[j];

                poleKusu[j] = tmp;
            }
        }
    }

    return *poleKusu;
}

která mi seřadí prvky v poli od nejmenšího od největšího, ale nemůžu přijít na to, jak zároveň odstranit duplicity v poli, aby jedno číslo bylo v poli max 3x nebo při nejlepším jednou, ale kombinaci např. 1 1 1 mi uložilo do promenné jako 1, když 2 2 2, tak se promená zvýšila na 2, atd a v poli mi zustali jen dva prvky

1 a 2. Nějaká rada jak na to?

Editováno 17.11.2014 14:53
 
Odpovědět 17.11.2014 14:53
Avatar
tomisoka
Redaktor
Avatar
tomisoka:

Na odstranění nějaké části pole používám obvykle toto:

uint32_t i, j, poleLen=10;
uint32_t pole[] = {1,2,3,3,4,4,4,7,9,10};
for(i=1,j=1;i<poleLen;++i){
   if(pole[i]!=pole[i-1]){
      pole[j++]=pole[i];
   }
}
/*j = délka bezduplicitního pole
pole[0] až pole[j-1] je přepsáno bezdupliciplitním polem*/

for(i=0;i<j;++i)
   printf("%d ", pole[i]);
printf("\n");
Editováno 17.11.2014 21:53
 
Nahoru Odpovědět  +1 17.11.2014 21:52
Avatar
Odpovídá na tomisoka
Libor Šimo (libcosenior):

Prosím ťa, aký je rozdiel medzi uint32_t a unsigned long int?

Nahoru Odpovědět 18.11.2014 6:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
vitamin
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
vitamin:

uint32_t je unsigned integer s velkostou 32bit.
unsigned long int je unsigned integer ktory je >= unsigned int. Jeho presna velkost sa moze lisit, niekde moze mat 32bit, niekde 64...

 
Nahoru Odpovědět 18.11.2014 7:04
Avatar
Odpovídá na vitamin
Libor Šimo (libcosenior):

Všimol som si, že používaš tieto typy namiesto klasických. Má to nejaký špeciálny význam?

Nahoru Odpovědět 18.11.2014 7:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.