/*****************************************************************
* Ovo delo zaštićeno je licencom Creative Commons CC BY-NC-ND 4.0
* (Attribution-NonCommercial-NoDerivatives 4.0 International License).
* Za detalje pogledati LICENSE.TXT
* Autori: Milena Vujosevic Janicic, Jovana Kovacevic,  
*         Danijela Simic, Andjelka Zecevic, Aleksandra Kocic
******************************************************************/

#include <stdio.h>
#include <stdlib.h>

#define MAKS 100

/* Funkcija ucitava elemente niza dimenzije n. */
void ucitaj(int a[], int n) {
  int i;
  printf("Unesite elemente niza: ");
  for (i = 0; i < n; i++)
    scanf("%d", &a[i]);
}

/* Funkcija ispisuje elemente niza dimenzije n. */
void ispisi(int a[], int n) {
  int i;
  for (i = 0; i < n; i++)
    printf("%d ", a[i]);
  printf("\n");
}

/* Funkcija razmenjuje najmanji i najveci element niza. */
void razmeni_min_max(int brojevi[], int n) {
  int i;
  /* Najvecim, kao i najmanjim elementom niza, proglasava se nulti
     element niza. Pozicije najveceg i najmanjeg elementa se
     postavljaju na 0. */
  int najveci = brojevi[0], najmanji = brojevi[0];
  int pozicija_najveceg = 0, pozicija_najmanjeg = 0;

  /* U prolazu kroz niz trazi se najveci i najmanji element i pamte 
     se njihove pozicije. */
  for (i = 1; i < n; i++) {
    if (brojevi[i] > najveci) {
      najveci = brojevi[i];
      pozicija_najveceg = i;
    }

    if (brojevi[i] < najmanji) {
      najmanji = brojevi[i];
      pozicija_najmanjeg = i;
    }
  }

  /* Zamenjuju se elementi na pozicijama pozicija_najmanjeg i
     pozicija_najveceg. */
  brojevi[pozicija_najveceg] = najmanji;
  brojevi[pozicija_najmanjeg] = najveci;
}

int main() {
  /* Deklaracija potrebnih promenljivih. */
  int brojevi[MAKS];
  int n;

  /* Ucitavanje dimenzije niza i provera ispravnosti ulaza. */
  printf("Unesite dimenziju niza: ");
  scanf("%d", &n);
  if (n <= 0 || n > MAKS) {
    printf("Greska: neispravan unos.\n");
    exit(EXIT_FAILURE);
  }

  /* Ucitavanje elemenata niza. */
  ucitaj(brojevi, n);

  /* Razmena najmanjeg i najveceg elementa. */
  razmeni_min_max(brojevi, n);

  /* Ispis rezultata. */
  printf("Rezultujuci niz:\n");
  ispisi(brojevi, n);

  exit(EXIT_SUCCESS);
}