Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Cwiczenie 2 */
- #include <stdio.h>
- #include <math.h> /* Dla funkcji log10() */
- void srednie(int tab[], int rozmiar) {
- int dod = 0; /* Suma liczb dodatnich */
- int dodM10 = 0; /* Suma liczb dodatnich mniejszych od 10 */
- int dodW100 = 0; /* Suma liczb dodatnich wiekszych niz 100 */
- int dodCnt = 0; /* Licznik liczb dodatnich */
- int dodM10Cnt = 0; /* Licznik liczb dodatnich mniejszych od 10 */
- int dodW100Cnt = 0; /* Licznik liczb dodatnich wiekszych niz 100 */
- int i; /* Iterator petli */
- for (i = 0; i < rozmiar; i++)
- if (tab[i] > 0) {
- dod += tab[i];
- dodCnt++;
- /* Obliczymy wartosc log10(tab[i]), a potem zrzutujemy ja */
- /* na typ calkowity. Otrzymamy w ten sposob ilosc cyfr */
- /* liczby tab[i] pomniejszona o 1. Po dodaniu jedynki */
- /* wyrazenie w konstrukcji switch reprezentuje ilosc cyfr */
- /* liczby tab[i]. */
- switch ( (int)log10(tab[i]) + 1 ) {
- case 1: /* Liczby jednocyfrowe */
- dodM10 += tab[i];
- dodM10Cnt++;
- break;
- case 2: /* Liczby dwucyfrowe */
- break;
- default: /* Pozostale */
- if (tab[i] == 100) break;
- dodW100 += tab[i];
- dodW100Cnt++;
- }
- }
- printf("Srednia liczb dodatnich wynosi %g.\n",
- (double)dod/dodCnt );
- printf("Srednia liczb dodatnich mniejszych od 10 wynosi %g.\n",
- (double)dodM10/dodM10Cnt );
- printf("Srednia liczb dodatnich wiekszych niz 100 wynosi %g.\n",
- (double)dodW100/dodW100Cnt );
- }
- /* Test: */
- int main(void) {
- int tablica[] = {1, 2, 3, 1, 20, -1, 30, 9, 100, 101};
- int rozmiar = sizeof(tablica)/sizeof(*tablica);
- srednie(tablica, rozmiar);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment