File: Stare vježbe/vjezbe04/27__pretvorba_baze.c

  1. /*
  2.   27__pretvorba_baze.c
  3.   Koristenje petlji. Naredbe break i continue.
  4.   -----
  5.   Program ucitani broj u bazi 10 ispisuje u zadanoj bazi.
  6. */
  7.  
  8. #include <stdio.h>
  9.  
  10. int main ()
  11. {
  12. int polazni_broj, baza, broj_znamenki, znamenke[8*sizeof(int)];
  13. int temp, i;
  14.  
  15. while (1)
  16. {
  17. /* ucitavamo broj kojeg treba ispisati u zadanoj bazi */
  18. printf ("Unesite broj (<=0 za kraj): ");
  19. scanf ("%d", &polazni_broj);
  20.  
  21. /* prekidamo izvrsavanje petlje ako je ucitani broj <= 0 */
  22. if (polazni_broj <= 0) break;
  23.  
  24. /* ucitavamo bazu */
  25. printf ("Unesite bazu: "); scanf ("%d", &baza);
  26.  
  27. /* baza mora biti veca od 1! */
  28. if (baza<2)
  29. {
  30. printf("Baza mora biti veca od 1!\n");
  31. continue;
  32. }
  33.  
  34. /* pretvaramo polazni_broj u bazu; zapisujemo znamenku po znamenku
  35.   u polje znamenke[] */
  36. broj_znamenki=0; temp=polazni_broj;
  37.  
  38. while (temp)
  39. {
  40. znamenke[broj_znamenki++]=temp%baza;
  41. temp/=baza;
  42. }
  43.  
  44. printf ("Broj %d u bazi %d: ", polazni_broj, baza);
  45.  
  46. /* uocimo da je zapis "naopak", tj. u znamenke[0] je zapisana
  47.   najmanje znacajna znamenka pretvorenog broja, a u
  48.   znamenke[broj_znamenki-1] najznacajnija.
  49.   Zbog toga moramo ispisivati clanove polja unatrag */
  50.  
  51. for (i=broj_znamenki-1; i>=0; i--)
  52. printf ("%c",
  53. znamenke[i] >= 10 ? 'A'+znamenke[i]-10 : '0'+znamenke[i]);
  54.  
  55. printf ("\n\n");
  56. }
  57.  
  58. return 0;
  59. }
  60.