/*****************************************************************
* 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_NISKA 10

/* Funkcija racuna broj cifara broja n. */
int broj_cifara(int n) {
  int brojac = 0;
  do {
    brojac++;
    n /= 10;
  } while (n);

  return brojac;
}

/* Funkcija od prosledjenog broja formira nisku. */
void broj_u_nisku(int broj, char s[]) {
  int n, cifra, i;

  /* Promenljiva n cuva informaciju o duzini niske. Duzina niske
     odgovara broju cifara prosledjenog broja. Ukoliko je broj
     negativan, onda se duzina uvecava za 1 i na prvo mesto se
     upisuje znak '-'. */
  n = broj_cifara(broj);
  if (broj < 0) {
    s[0] = '-';
    n++;
  }

  /* U nastavku se radi sa apsolutnom vrednoscu broja. */
  broj = abs(broj);

  /* Cifre broja se upisuju u nisku s sa desna na levo. */
  s[n] = '\0';
  i = n - 1;
  do {
    /* Karakter koji odgovara trenutnoj cifri se dobija izrazom '0' 
       + cifra. Na primer, '0' + 5 je '5' jer se karakter '5'
       nalazi 5 mesta nakon karaktera '0' u ASCII tablici. */
    cifra = broj % 10;
    broj = broj / 10;
    s[i] = '0' + cifra;
    i--;
  } while (broj);
}

int main() {
  /* Deklaracije potrebnih promenljivih. */
  int n;
  char s[MAKS_NISKA];

  /* Ucitavanje broja. */
  printf("Unesite ceo broj: ");
  scanf("%d", &n);

  /* Formiranje niske. */
  broj_u_nisku(n, s);

  /* Ispis rezultata. */
  printf("Rezultat: %s\n", s);

  exit(EXIT_SUCCESS);
}