Advertisement
dusanrs

zadatak2_moje_resenje

Apr 18th, 2022
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.87 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. int* CalculateMinMax(char* buffer,int n);
  5.  
  6. int main(){
  7.  
  8.     int *rez=(int*)malloc(sizeof(int));
  9.     int n,i,j;
  10.     printf("Unesite kolikoko brojeva zelite\n");
  11.     scanf("%d",&n);
  12.     printf("Zelite niz od n=%d brojeva\n",n);
  13.     char niz[n]; // niz bajtova!!!! -->ekvivalent ovome je char *buffer ili char buffer[] pokazivac na prvi
  14.                 // dva bajta ce zauzimati jedan element u ovom nizu
  15.     for(i=0;i<n;i++){  // sadunosim n elemenata svaki element po 2 bajta
  16.         printf("Unesite broj tipa short\n");
  17.         scanf("%d",(short*)(niz+i*sizeof(short))); // unosio sam brojeve kao short da mogu da vratim i min i maks u isto vreme
  18.     }
  19.  
  20. /*
  21.     for(j=0;j<n;j++){ // ispis elemenata unetih u niz
  22.         printf("%hu\n",*((short*)(niz+j*sizeof(short))));
  23.     }
  24. */
  25.    
  26.    rez=CalculateMinMax(niz,n);
  27.  
  28.    printf("Minimum niza:%d\n",*((short*)rez));
  29.    printf("Maksimum niza:%d\n",*((short*)rez+sizeof(short)));
  30.  
  31.     return 0;
  32. }
  33.  
  34.  
  35. int* CalculateMinMax(char* buffer,int n){
  36.     int *rez=(int*)malloc(sizeof(int));
  37.     int i,j;
  38.     //treba postaviti min i maks
  39.  
  40.     *((short*)rez)=*((short*)buffer); // na prva dva bajta neka bude minimum
  41.     *((short*)rez+sizeof(short))=*((short*)buffer); // na druga dva bajta neka bude maksimum
  42.  
  43.     //moguce je postaviti dve iste vrednosti pointera na dve razlicite adrese nece se buniti
  44.     // u ovom slucaju i min i maks mi je prvi element
  45.  
  46.  
  47.  
  48.     for(i=0;i<n;i++){ // prvo trazim minimum
  49.         if(*((short*)buffer+i)<*((short*)rez)) // ako je ovaj na i-toj mani onda on postaje manji
  50.             *((short*)rez)=*((short*)buffer+i*sizeof(short));
  51.     }
  52.  
  53.     for(j=0;j<n;j++){   // trazenje maksimuma
  54.         if(*((short*)buffer+j)>*((short*)rez+sizeof(short)))
  55.             *((short*)rez+sizeof(short))=*((short*)buffer+j);
  56.     }
  57.    
  58.     return rez;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement