Code:
/*
Brisanje svakog k-tog elementa niza.
*/
#include <stdio.h>
// Prikazuje niz sa brClanova integer-a
void prikazi_niz( char *tekst, int niz[], int brClanova )
{
int i;
printf("\n%s", tekst );
for(i=0;i<brClanova;i++)
printf("%3d", niz[i] );
printf("\n");
}
// Brise svaki drugi element niza niz[] koji ima n integera.
void obrisi_svaki_drugi_element_niza_v1( int niz[], int *n )
{
int i, NoviBrojClanova=0;
for(i=0;i<*n;i++){
printf("\n %d %% 2 = %d \n",i,i%2);
if( i%2 == 0 )
niz[NoviBrojClanova++] = niz[i];
}
*n = NoviBrojClanova; // smanjujemo broj clanova niza n na NoviBrojClanova
}
// Brise svaki drugi element niza niz[] koji ima n integera.
void obrisi_svaki_drugi_element_niza_v2( int niz[], int *n )
{
int i, NoviBrojClanova=0;
for(i=0;i<*n;i+=2)
niz[NoviBrojClanova++] = niz[i];
*n = NoviBrojClanova; // smanjujemo broj clanova niza n na NoviBrojClanova
}
// Brise svaki k-ti element niza niz[] koji ima n integera.
void obrisi_svaki_k_ti_element_niza_v1( int niz[], int *n , int k )
{
int i, NoviBrojClanova=0, IndeksZaBrisanje=k-1; // jer je k redni broj elementa
printf("\n Brisemo svaki %d. clan niza. \n",k);
for(i=0;i<*n;i++)
if( i == IndeksZaBrisanje )
IndeksZaBrisanje += k;
else
niz[NoviBrojClanova++] = niz[i];
*n = NoviBrojClanova; // smanjujemo broj clanova niza n na NoviBrojClanova
}
// Brise svaki k-ti element niza niz[] koji ima n integera.
int obrisi_svaki_k_ti_element_niza_v2( int niz[], int *n , int k )
{
int i, NoviBrojClanova=1; // jer nema smisla brisati 1. clan niza
printf("\n Brisemo svaki %d. clan niza. \n",k);
if ( k < 2 ) // tada brisanje nema smisla
return 1;
for(i=1;i<*n;i++) // // i=1 jer nema smisla brisati 1. clan niza
if( (i+1)%k != 0 ) // indeks i pretvaramo u redni broj i+1
niz[NoviBrojClanova++] = niz[i];
*n = NoviBrojClanova; // smanjujemo broj clanova niza n na NoviBrojClanova
return 0;
}
int main(void)
{
int niz[] = {1,2,3,4,5,6,7,8,9};
int n = sizeof(niz) / sizeof(int); // broj elemenata niza
printf("\n n = %d \n",n);
prikazi_niz(" Originalni niz je: ",niz,n);
// obrisi_svaki_drugi_element_niza_v1(niz,&n);
// obrisi_svaki_drugi_element_niza_v2(niz,&n);
// obrisi_svaki_k_ti_element_niza_v1(niz,&n,3);
obrisi_svaki_k_ti_element_niza_v2(niz,&n,3);
printf("\n n = %d \n",n);
prikazi_niz(" Obradjeni niz je: ",niz,n);
return 0;
}