C programs

Wednesday, November 30, 2005

 

Program za odredjivanje nekog cudnog proseka (za detalje videti komentare u programu)

  1. /*******************************************
  2. *
  3. *  N.P. koji omogucava unos N brojeva i izracunava srednju vrednost
  4. *  pozitivnih brojeva medju njima iskljucujuci sve one koji su minimalni
  5. *  ili maximalni! (bez nizova)
  6. *
  7. ********************************************/
  8.  
  9. #include <stdio.h>
  10.  
  11. main () {
  12.     int n, i, br, brmin=0, brmax=0, brneg=0;
  13.     double a, sum=0, min, max, p;
  14.     char again = 'y';
  15.     /****************************************
  16.     *
  17.     *  n je broj brojeva koji se unose
  18.     *  i je pomocna promenljiva za bor petlju
  19.     *  br je broj onih koji ispunjavaju uslov
  20.     *  brmin je broj minimalnih
  21.     *  brmax je broj maximalnih
  22.     *  brneg je broj negativnih
  23.     *  a je promenljiva za ucitavanje svakog broja
  24.     *  sum je zbir svih pozitivnih brojeva, i posle onih koji ispunjavaju kriterijum
  25.     *  min je najmanji od svih unesenih brojeva
  26.     *  max je najveci od svih unesenih brojeca
  27.     *  p je prosek brojeva koji zadovoljavaju kriterijum
  28.     *
  29.     ****************************************/
  30.  
  31.  
  32.     /***************************************
  33.     *
  34.     *  Pocetna konverzacija
  35.     *
  36.     ***************************************/
  37.     printf("Program za racunanje proseka pozitivnih brojeva bez minimuma i maximuma!\n");
  38.  
  39.  
  40.     while (again=='y')
  41.     {
  42.                 /********************************
  43.                 *
  44.                 *  Dodeljuje promenljivima vrednost nula
  45.                 *  da ne bi zadrzale vrednost iz prethodnog
  46.                 *  ponavljanja!
  47.                 *
  48.                 ********************************/
  49.                 br=0; brmin=0; brmax=0; brneg=0;
  50.                 sum=0;
  51.  
  52.  
  53.                 /**************************************
  54.                 *
  55.                 *  Unos broja brojeva za obradu
  56.                 *
  57.                 **************************************/
  58.                 printf("\nKoliko imate brojeva? ");
  59.                 scanf("%d", &n);
  60.                 while ((n<=0) && (n>=500))
  61.                 {
  62.                     printf("Broj je izvan opsega! Unesite ponovo koliko imate brojeva: ");
  63.                     scanf("%d", &n);
  64.                 }
  65.  
  66.  
  67.                 /*************************************
  68.                 *
  69.                 *  Petlja za unos brojeva i njihovu obradu
  70.                 *  U petlji se trazi minimalni, maximalni,
  71.                 *  broj minimalnih i maximalnih, zbir pozitivnih
  72.                 *  i broj negativnih!
  73.                 *
  74.                 *************************************/
  75.                 for (i=1; i<=n; i++) {
  76.  
  77.                     /*************************
  78.                     *
  79.                     * Unos svakog broja
  80.                     *
  81.                     *************************/
  82.                     printf("\nUnesite %d. broj: ", i);
  83.                     scanf("%lf", &a);
  84.  
  85.                     /***************************************
  86.                     *
  87.                     *  Ako se unosi prvi broj, on je i minimalan i maximalan
  88.                     *
  89.                     ****************************************/
  90.                     if (i==1) {
  91.                         min = a;
  92.                         brmin = 1;
  93.                         max = a;
  94.                         brmax = 1;
  95.                         }
  96.                         /**************************************
  97.                         *
  98.                         *  a ako nije prvi, onda se proverava da li je unesen
  99.                         *  broj  veci od maximuma ili manji od minimuma i na
  100.                         *  osnovu toga odredjuje minimum i maximum!
  101.                         *  Ako je unesen broj jedank minimumu ili maximumu
  102.                         *  broj minimalnih ili maximalnih se povecava za jedan!
  103.                         *
  104.                         **************************************/
  105.                         else
  106.                         {
  107.                             if (a==min) brmin++;
  108.                             if (a==max) brmax++;
  109.                             if (a>max) {
  110.                                 max = a;
  111.                                 brmax = 1;
  112.                                 }
  113.                             if (a<min) {
  114.                                 min = a;
  115.                                 brmin = 1;
  116.                                 }
  117.  
  118.                         }
  119.                     /************************************
  120.                     *
  121.                     *  Ako je unseseni broj pozitivan, dodaje ga sumi
  122.                     *  a ako nije, povecava broj negativnih za jedan
  123.                     *
  124.                     ************************************/
  125.                      if (a>=0) sum += a;
  126.                         else brneg++;
  127.  
  128.                 }
  129.  
  130.  
  131.  
  132.                 /***************************************
  133.                 *
  134.                 *  U zavisnosti od toga da li su minimalni i maximalni
  135.                 *  pozitivni ili negativni, racuna se suma onih koji ispunjavaju
  136.                 *  kriterijum i broj onih koji ispunjavaju kriterijum!
  137.                 *
  138.                 ***************************************/
  139.                 if (min>0) sum -= brmin*min;
  140.                 if (max>0) sum -= brmax*max;
  141.                 if (min<0) br = n - (brneg + brmax);
  142.                     else
  143.                     br = n - (brneg + brmin + brmax);
  144.  
  145.                 /**************************************
  146.                 *
  147.                 *  Moze da se desi da su svi brojevi isti
  148.                 *  pa ce tada broj onih koji ispunjavaju
  149.                 *  kriterijum biti negativan. Zbog toga se
  150.                 *  koristi sledeci uslov!
  151.                 *
  152.                 ***************************************/
  153.                 if (br<0) br = 0;
  154.                  /***************************************
  155.                  *
  156.                  *  Ako je maximalnan manji od nule, broj onih koji
  157.                  *  zadovoljavaju uslov je nula
  158.                  *
  159.                  ****************************************/
  160.                 if (max<0) br = 0;
  161.  
  162.                 /****************************************
  163.                 *
  164.                 *  Proverava da li je broj onih koji ispunjavaju kriterijum
  165.                 *  razlicit od nule (jer deljenje nulom nije dozvoljeno)
  166.                 *  i racuna prosek!
  167.                 *
  168.                 ****************************************/
  169.                 if (br != 0) {
  170.                     p = sum / br;
  171.                     }
  172.  
  173.                 /***************************************
  174.                 *
  175.                 *  Ako postoji trazeni prosek ispisuje ga, u suprotnom
  176.                 *  ispisuje odgovarajucu poruku!
  177.                 *
  178.                 ***************************************/
  179.                 if (br !=0) printf("\n\nProsek trazenih brojeva je %.2lf!\n\n", p);
  180.                     else printf("\n\nNe postoje brojevi koji ispunjavaju uslov!\n\n");
  181.  
  182.  
  183.                 /**************************************
  184.                 *
  185.                 *  Provera da li korisnik zeli da ponovi program
  186.                 *
  187.                 **************************************/
  188.                 printf("\nDa li zelite da ponovite program? (y/n) : ");
  189.                 scanf("%c", &again);
  190.                 scanf("%c", &again);
  191.                 while (again!='y' && again!='n')
  192.                 {
  193.                     printf("\nPOGRESAN UNOS! Da li zelite da ponovite program? (y/n): ");
  194.                     scanf("%c", &again);
  195.                     scanf("%c", &again);
  196.                 }
  197.     }
  198.     /**************************
  199.     *
  200.     *  KRAJ PROGRAMA
  201.     *
  202.     **************************/
  203.     printf("***KRAJ PROGRAMA***\n\n");
  204.  
  205.     return 0;
  206. }
  207.  

Comments: Post a Comment



<< Home

Archives

November 2005   December 2005   January 2006  

This page is powered by Blogger. Isn't yours?