- /*********************************************************** 
- * 
- *  Duz kruznog puta nalazi se N gradova. U svakom od njih postoji 
- *  prodavnica bele tehnike. Poznata je cena zamrzivaca u svakom  
- *  gradu i cena voznje do svakog grada sa povratkom. Za mestane 
- *  svakog grada odrediti grad u kome ce najekonomicnije proci  
- *  prilikom kupovine zamrzivaca i u kom smeru da putuju. 
- * 
- ************************************************************/ 
-   
-   
- #include <stdio.h> 
- #define MAX_NIZ 50 
-   
- main () { 
-   
-     /****************************************** 
-     * 
-     *  Definisanje enumeracije 
-     * 
-     ******************************************/ 
-     enum pozneg {NEG, POZ}; 
-   
-     /*********************************************************************** 
-     * 
-     *      Deklaracija promenljivih 
-     *  n je broj gradova 
-     *  fridz je niz sa cenama frizidera u svakom gradu 
-     *  put je niz sa cenom puta do svakog grada 
-     *  i, j je brojac za petlju 
-     *  grad je broj grada gde se kupac nalazi 
-     *  eko1 i eko2 su nizovi sa ukupnim cenama frizidera sa putovanjem 
-     *               u oba smera (eko1 je pozitivan smer, a eko2 negativan) 
-     *  sumput je ukupna cena svih putovanja (putovanje u krug) 
-     *  min1 i min2 su najmanji clanovi nizova eko1 i eko2 
-     *  min je najmanja cena iz oba pravca 
-     *  pozneg pamti najekonomicniji smer kretanja kupca 
-     *  eko1grad i eko2grad pamte broj najekonomicnijeg grada 
-     *  ekograd je broj najekonomicnijeg grada uopste 
-     *  again je pomocna promenljiva za ponavljanje programa ako to korinsik zeli 
-     * 
-     **********************************************************************/ 
-     float fridz[MAX_NIZ], put[MAX_NIZ], eko1[MAX_NIZ], eko2[MAX_NIZ], sumput, min1, min2, min; 
-     int n, i, j, grad, pozneg, eko1grad, eko2grad, ekograd; 
-     char again = 'y'; 
-   
-     /***************************************** 
-     * 
-     *  Uvodna konverzacija 
-     * 
-     *****************************************/ 
-     printf("Program za odredjivanje najekonomicnije kupovine frizidera!")- ; 
 
-   
-     while (again=='y') 
-     { 
-             /***************************************** 
-             * 
-             *  Inicijalizacija niza 
-             * 
-             ******************************************/ 
-             for (i=0; i<MAX_NIZ; i++) fridz[i] = put[i] = eko1[i] = eko2[i] = 0; 
-   
-             /**************************************** 
-             * 
-             *  Unos broja gradova 
-             * 
-             ****************************************/ 
-             printf("\nUnesite broj gradova: ")- ; 
 
-             scanf("%d", &n); 
-             while (n<=0 || n>MAX_NIZ) { 
-                 printf("Unos je van opsega! Unesite ponovo broj gradova: ")- ; 
 
-                 scanf("%d", &n); 
-             } 
-   
-             /************************************** 
-             * 
-             *  Unos cena frizidera u svakom gradu 
-             * 
-             **************************************/ 
-             printf("\n\tUnos cena frizidera u svakom gradu\n")- ; 
 
-             for (i=0; i<n; i++) { 
-                 printf("Unesite cenu frizidera u gradu %d: "- , i+ 1)- ; 
 
-                 scanf("%f", &fridz[i]); 
-                 while (fridz[i]<0) { 
-                     printf("\n\tCena ne moze biti negativna! Unesite cenu frizidera u gradu %d: "- , i+ 1)- ; 
 
-                     scanf("%f", &fridz[i]); 
-                     } 
-                 } 
-   
-             /*************************************** 
-             * 
-             *  Unos cena puta izmedju svakog grada i racunanje 
-             *  ukupne cene ako bi se obisao krug kroz sve gradove 
-             * 
-             ***************************************/ 
-             sumput = 0;   /*postavljanje sume cena svih puteva na nulu*/ 
-             printf("\n\tUnos cena puta izmedju svaka dva grada!\n")- ; 
 
-             for (i=0; i<n; i++) { 
-                 if (i==(n-1)) { 
-                     printf("Unesite cenu puta izmedju gradova %d i 1 : "- , i+ 1)- ; 
 
-                     scanf("%f", &put[i]); 
-                     while (put[i]<0) { 
-                         printf("\n\tCena ne moze biti negativna. Unesite cenu puta izmedju gradova %d i 1 : "- , i+ 1)- ; 
 
-                         scanf("%f", &put[i]); 
-                     } 
-   
-                 } 
-                 else { 
-                     printf("Unesite cenu puta izmedju gradova %d i %d : "- , i+ 1- , i+ 2)- ; 
 
-                     scanf("%f", &put[i]); 
-                     while (put[i]<0) { 
-                         printf("\n\tCena ne moze biti negativna. Unesite cenu puta izmedju gradova %d i %d : "- , i+ 1- , i+ 2)- ; 
 
-                         scanf("%f", &put[i]); 
-                     } 
-                 } 
-                 sumput += put[i]; 
-             } 
-   
-             /***************************************** 
-             * 
-             *  Unos grada gde se kupac nalazi 
-             * 
-             *****************************************/ 
-             /*printf("\n\tU kom gradu se kupac nalazi? "); 
-             scanf("%d", &grad); 
-             while (grad<=0 || grad>n) { 
-                 printf("Unesti grad je izvan opsega! U kom gradu se kupac nalazi? "); 
-                 scanf("%d", &grad); 
-                 } 
-                 grad--;  
-             */ 
-              
-              
-             /********************************************************************** 
-             * 
-             *  Petlja koja prolazi kroz sve gradove i ispisuje rezultate za njih 
-             * 
-             **********************************************************************/ 
-             for (grad=0; grad<n; grad ++) { 
-                  
-                 /***************************************** 
-                 * 
-                 *  Inicijalizacija nizova i promenljivih 
-                 * 
-                 ******************************************/ 
-                 for (i=0; i<n; i++) eko1[i] = eko2[i] = 0; 
-                  
-                  
-                 /***************************************** 
-                 * 
-                 *  Kreiranje niza cena u svim gradovima zajedno sa 
-                 *  putovanjem do tih gradova u pozitivnom smeru 
-                 *  (suprotan kretanju kazaljke na satu) 
-                 * 
-                 *****************************************/ 
-                 for (i=0; i<n; i++) { 
-                     /************************************* 
-                     * 
-                     *  U gradu gde se kupac nalazi troskovi su jednaki 
-                     *  ceni frizidera u tom gradu 
-                     * 
-                     **************************************/ 
-                     if (i==grad) { 
-                         eko1[i] = fridz[i]; 
-                     } 
-                     else { 
-                      
-                         /********************************************************************** 
-                         * 
-                         *  Ako do nekog grada moramo stici prolazeci kroz kraj kruga (put od poslednjeg do 
-                         *  prvog grada) onda od ukupne cene putovanja kroz ceo krug oduzimamo cenu puta 
-                         *  koji kupac ne mora da predje da bi stigao do odredjenog grada i dodajemo cenu 
-                         *  frizidera u tom gradu 
-                         * 
-                         ***********************************************************************/ 
-                         if (i<grad) { 
-                                 eko1[i] = sumput; 
-                                 for (j=i; j<grad; j++) eko1[i] -= put[j]; 
-                                 eko1[i] += fridz[i]; 
-                                 } 
-                         /*********************************************************************** 
-                         * 
-                         *  Ako se do grada moze stici u pozitivnom smeru bez prolaska kroz kraj kruga (put 
-                         *  od poslednjeg do prvog grada) onda saberemo cenu svakog puta koji kupac treba 
-                         *  da prodje da bi stigao do odredjenog grada i dodamo cenu frizidera u tom gradu 
-                         * 
-                         ************************************************************************/ 
-                         if (i>grad) { 
-                             for (j=grad; j<i; j++) eko1[i] += put[j];  ; 
-                             eko1[i] += fridz[i]; 
-                          
-                             } 
-                         } 
-                 } 
-                  
-                 /***************************************** 
-                 * 
-                 *  Kreiranje niza cena u svim gradovima zajedno sa  
-                 *  putovanjem do tih gradova u negativnom smeru 
-                 *  (smer kretanja kazaljke na satu) 
-                 * 
-                 *****************************************/ 
-                 for (i=0; i<n; i++) { 
-                     /************************************* 
-                     * 
-                     *  U gradu gde se kupac nalazi troskovi su jednaki 
-                     *  ceni frizidera u tom gradu 
-                     * 
-                     **************************************/ 
-                     if (i==grad) { 
-                         eko2[i] = fridz[i];    
-                         } 
-                         else { 
-                             /********************************************************************** 
-                             * 
-                             *  Ako do nekog grada moramo stici prolazeci kroz kraj kruga (put od poslednjeg do 
-                             *  prvog grada) onda od ukupne cene putovanja kroz ceo krug oduzimamo cenu puta 
-                             *  koji kupac ne mora da predje da bi stigao do odredjenog grada i dodajemo cenu 
-                             *  frizidera u tom gradu 
-                             * 
-                             ***********************************************************************/ 
-                             if (i>grad) { 
-                                 eko2[i] = sumput; 
-                                 for (j=grad; j<i; j++) eko2[i] -= put[j]; 
-                                 eko2[i] += fridz[i];             
-                         }  
-                         else  
-                             /*********************************************************************** 
-                             * 
-                             *  Ako se do grada moze stici u pozitivnom smeru bez prolaska kroz kraj kruga (put 
-                             *  od poslednjeg do prvog grada) onda saberemo cenu svakog puta koji kupac treba 
-                             *  da prodje da bi stigao do odredjenog grada i dodamo cenu frizidera u tom gradu 
-                             * 
-                             ************************************************************************/ 
-                             if (i<grad) { 
-                                 for (j=i; j<grad; j++) eko2[i] += put[j]; 
-                                 eko2[i] += fridz[i];                 
-                             } 
-                     } 
-                 }       
-                  
-                  
-                 /******************************************* 
-                 * 
-                 *  Trazenje najmanjeg clana nizova eko1 i eko2 
-                 *  i broja najekonomicnijeg grada 
-                 * 
-                 ******************************************/ 
-                 for (eko1grad = 0, eko2grad = 0, min1 = eko1[0], min2 = eko2[0], i=1; i<n; i++) { 
-                     if (eko1[i]<min1) { 
-                         min1 = eko1[i]; 
-                         eko1grad = i; 
-                         } 
-                     if (eko2[i]<min2) { 
-                         min2 = eko2[i]; 
-                         eko2grad = i; 
-                         } 
-                 }    
-                  
-                 /******************************************* 
-                 * 
-                 *  Odredjivanje najmanje cene kod oba smera i broja 
-                 *  grada koji je najekonomicniji i odredjivanje pravca 
-                 *  u kom kupac treba da se krece 
-                 * 
-                 *******************************************/ 
-                 if (min1<min2) { 
-                     min = min1; 
-                     ekograd = eko1grad; 
-                     pozneg = POZ;       
-                     } 
-                     else { 
-                         min = min2; 
-                         ekograd = eko2grad; 
-                         pozneg = NEG;       
-                     } 
-      
-                  
-                 /***************************************** 
-                 * 
-                 *  Ispis rezultata na ekranu 
-                 * 
-                 *****************************************/ 
-                 printf("\n\nIspis za grad %d!\n"- , grad+ 1)- ; 
 
-                 if (- grad==ekograd ) printf("\n\n\tNajekonomicnije je da kupac kupi frizider u svom gradu!\n")- ; 
 
-                 else { 
-                     printf("\n\tNajekonomicnije grad za kupovinu frizidera je %d, i treba da idete u smeru "- , ekograd+ 1)- ; 
 
-                     if (- pozneg==NEG ) printf("suprotnom od ")- ;    
 
-                     printf("kretanja kazaljke na satu! Cena je %.2f"- , min )- ; 
 
-                 } 
-              
-                  
-             } 
-             /************************************************ 
-             * 
-             *  Provera da li korinik zeli da ponovi program 
-             * 
-             ************************************************/ 
-             printf("\nDa li zelite da ponovite program? (y/n) ")- ; 
 
-             scanf("%c", &again); 
-             scanf("%c", &again); 
-             while (again!='y' && again !='n') { 
-                 printf("Pogresan unos! Da li zelite da ponovite program? (y/n) ")- ; 
 
-                 scanf("%c", &again); 
-                 scanf("%c", &again); 
-                 } 
-                  
-     } 
-          
-      
-     /******************************** 
-     * 
-     *  KRAJ PROGRAMA 
-     * 
-     ********************************/ 
-     printf("\n\n\t***KRAJ PROGRAMA***\n\n")- ; 
 
-     return 0; 
-   
- } 
-