Guest User

Cwiczenie 2

a guest
Dec 4th, 2011
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. /* Cwiczenie 2 */
  2.  
  3. #include <stdio.h>
  4. #include <math.h>    /* Dla funkcji log10() */
  5.  
  6.  
  7. void srednie(int tab[], int rozmiar) {
  8.     int dod = 0;         /* Suma liczb dodatnich */
  9.     int dodM10 = 0;      /* Suma liczb dodatnich mniejszych od 10 */
  10.     int dodW100 = 0;     /* Suma liczb dodatnich wiekszych niz 100 */
  11.     int dodCnt = 0;      /* Licznik liczb dodatnich */
  12.     int dodM10Cnt = 0;   /* Licznik liczb dodatnich mniejszych od 10 */
  13.     int dodW100Cnt = 0;  /* Licznik liczb dodatnich wiekszych niz 100 */
  14.     int i;               /* Iterator petli */
  15.    
  16.    
  17.     for (i = 0; i < rozmiar; i++)
  18.         if (tab[i] > 0) {
  19.             dod += tab[i];
  20.             dodCnt++;
  21.            
  22.             /* Obliczymy wartosc log10(tab[i]), a potem zrzutujemy ja */
  23.             /* na typ calkowity. Otrzymamy w ten sposob ilosc cyfr    */
  24.             /* liczby tab[i] pomniejszona o 1. Po dodaniu jedynki     */
  25.             /* wyrazenie w konstrukcji switch reprezentuje ilosc cyfr */
  26.             /* liczby tab[i].                                         */
  27.            
  28.             switch ( (int)log10(tab[i]) + 1 ) {
  29.                 case 1:   /* Liczby jednocyfrowe */
  30.                     dodM10 += tab[i];
  31.                     dodM10Cnt++;
  32.                     break;
  33.                 case 2:   /* Liczby dwucyfrowe */
  34.                     break;
  35.                 default:  /* Pozostale */
  36.                     if (tab[i] == 100) break;
  37.                     dodW100 += tab[i];
  38.                     dodW100Cnt++;
  39.             }
  40.         }
  41.    
  42.     printf("Srednia liczb dodatnich wynosi %g.\n",
  43.            (double)dod/dodCnt );
  44.     printf("Srednia liczb dodatnich mniejszych od 10 wynosi %g.\n",
  45.            (double)dodM10/dodM10Cnt );
  46.     printf("Srednia liczb dodatnich wiekszych niz 100 wynosi %g.\n",
  47.            (double)dodW100/dodW100Cnt );
  48. }
  49.  
  50. /* Test: */
  51. int main(void) {
  52.     int tablica[] = {1, 2, 3, 1, 20, -1, 30, 9, 100, 101};
  53.     int rozmiar = sizeof(tablica)/sizeof(*tablica);
  54.    
  55.     srednie(tablica, rozmiar);
  56.    
  57.     return 0;
  58. }
  59.  
  60.  
Advertisement
Add Comment
Please, Sign In to add comment