Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- int* CalculateMinMax(char* buffer,int n);
- int main(){
- int *rez=(int*)malloc(sizeof(int));
- int n,i,j;
- printf("Unesite kolikoko brojeva zelite\n");
- scanf("%d",&n);
- printf("Zelite niz od n=%d brojeva\n",n);
- char niz[n]; // niz bajtova!!!! -->ekvivalent ovome je char *buffer ili char buffer[] pokazivac na prvi
- // dva bajta ce zauzimati jedan element u ovom nizu
- for(i=0;i<n;i++){ // sadunosim n elemenata svaki element po 2 bajta
- printf("Unesite broj tipa short\n");
- scanf("%d",(short*)(niz+i*sizeof(short))); // unosio sam brojeve kao short da mogu da vratim i min i maks u isto vreme
- }
- /*
- for(j=0;j<n;j++){ // ispis elemenata unetih u niz
- printf("%hu\n",*((short*)(niz+j*sizeof(short))));
- }
- */
- rez=CalculateMinMax(niz,n);
- printf("Minimum niza:%d\n",*((short*)rez));
- printf("Maksimum niza:%d\n",*((short*)rez+sizeof(short)));
- return 0;
- }
- int* CalculateMinMax(char* buffer,int n){
- int *rez=(int*)malloc(sizeof(int));
- int i,j;
- //treba postaviti min i maks
- *((short*)rez)=*((short*)buffer); // na prva dva bajta neka bude minimum
- *((short*)rez+sizeof(short))=*((short*)buffer); // na druga dva bajta neka bude maksimum
- //moguce je postaviti dve iste vrednosti pointera na dve razlicite adrese nece se buniti
- // u ovom slucaju i min i maks mi je prvi element
- for(i=0;i<n;i++){ // prvo trazim minimum
- if(*((short*)buffer+i)<*((short*)rez)) // ako je ovaj na i-toj mani onda on postaje manji
- *((short*)rez)=*((short*)buffer+i*sizeof(short));
- }
- for(j=0;j<n;j++){ // trazenje maksimuma
- if(*((short*)buffer+j)>*((short*)rez+sizeof(short)))
- *((short*)rez+sizeof(short))=*((short*)buffer+j);
- }
- return rez;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement