Napisati funkciju koja će sve elemente zadatog celobrojnog polja p od N elemenata pomeriti za određeni broj mesta pomak (pomak < N). Ukoliko je pomak pozitivan, elementi polja pomiču se udesno, a ukoliko je pomak negativan, elementi polja pomiču se ulevo. Ispražnjeni elementi pune se nulama.
Primer pomaka za pomak = 2 i polje [10 40 50 60 12]:
Polje prije posmaka: [10 40 50 60 12]
Polje nakon posmaka:[ 0 0 10 40 50]
Rešenje:
void pomakniPolje(int *p, int N, int pomak) {
int i;
// ako je pomak udesno
if (pomak > 0 && pomak < N) {
for (i = N - 1 - pomak; i >= 0; i --)
p[i + pomak] = p[i];
for (i = pomak - 1; i >= 0; i --)
p[i] = 0;
}
// ako je pomak ulevo
else if (pomak < 0 && -pomak < N) {
pomak = -pomak;
for (i = 0; i <= N - 1 - pomak; i++)
p[i] = p[i + pomak];
for (i = N - pomak; i < N; i++)
p[i] = 0;
}
}
Zbunjuje me ovo void pomakniPolje(int *p, int N, int pomak)
zasto int *p kada se u daljem tekstu koristi polje p[]