File: Stare vježbe/vjezbe09/53__pointeri_operacije.c
/* 53__pointeri_operacije.c Operacije nad pokazivacima, usporedjivanje pokazivaca ----- Dane su funkcije max1 i max2 koje za dani realni niz odredjene duljine nalaze njegov maksimum. Pritom je max1 implementirana "klasicno", dok je max2 realizirana upotrebom pointerske aritmetike. */ #include <stdio.h> #define N 10 float max1(float* x, int duljina) { float maximum; int i; maximum=x[0]; for(i = 0; i < duljina; i++) if(x[i] > maximum) maximum = x[i]; return maximum; } float max2(float* x, int duljina) { float maximum, *px; maximum = *x; for(px = &x[0]; px <= &x[duljina-1]; px++) /* ili for(px = x; px <= x+duljina-1; px++) */ if(*px > maximum) maximum = *px; return maximum; } int main() { int i; float x[N]; for(i=0; i<N; i++) printf("%.2f ", * (x+i )=i* (N-i )); printf("\n\nmax1: %.2f\n", max1 (&x [0], N )); printf("max2: %.2f\n", max2 (x, N )); /* Funkciju mozemo pozvati i tako da predamo x+i kao pocetnu adresu adresu za polje, no, tada ce broj elemenata biti N-i */ printf("max2: %.2f\n", max2 (x +3*N/ 4, N -3*N/ 4)); return 0; }
|