Advertisement
bartek27210

srednia bez maxa

Jun 27th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int n=0, i=0, max=0, ilosc=0, nowy=0, j=0, *tab=NULL, *tabnowa=NULL, suma=0;
  7.     double srednia=0;
  8.  
  9.     printf("podaj rozmiar tablicy: ");
  10.     fflush(stdin);
  11.     scanf("%d", &n);                               //wczytywanie rozmiaru tablicy
  12.     tab=(int*)realloc(tab,n*sizeof(int));          // rezerwowanie pamięci dla tablicy o podanym rozmiarze
  13.  
  14.     printf("podaj elementy tablicy: ");
  15.     for(i=0;i<n;i++)                               //kazdy taki for to przechodzenie przez cala tablice
  16.     {
  17.         scanf("%d",&tab[i]);                       // wczytywanie danych do tablicy
  18.     }
  19.  
  20.     printf("\nTablica: \n");
  21.      for(i=0;i<n;i++)
  22.     {
  23.         printf("%d ",tab[i]);                   // wyswietlanie tablicy
  24.     }
  25.  
  26.     max=tab[0];                                 // przypisanie maxa pierwszemu elementowi
  27.     for(i=1;i<n;i++)
  28.     {
  29.         if(tab[i]>max)                          //sprawdzanie czy istnieje element wiekszy od max
  30.             {
  31.                 max=tab[i];                     // jesli istnieje to przypisanie maxowi nowej wartosci
  32.             }
  33.     }
  34.  
  35.      for(i=1;i<n;i++)
  36.     {
  37.         if(tab[i]==max)                          // zliczanie ilosc maxów
  38.             ilosc=ilosc+1;
  39.     }
  40.    printf("\nmax=%d, ilosc=%d",max,ilosc);
  41.     nowy=n-ilosc;                                               // okreslenie nowego rozmiaru tablicy
  42.     tabnowa=(int*)realloc(tabnowa,nowy*sizeof(int));            // zarezerwowanie pamieci dla nowego rozmiaru
  43.  
  44.  
  45.       for(i=0;i<n;i++)
  46.     {
  47.                   if(j==nowy)                                   // j to indeksy nowej tablicy, jesli cala sie wypelni to
  48.                     break;                                      // stop
  49.                   if(tab[i]!=max)                               // jesli liczba rozna od maxa
  50.                   {
  51.                 tabnowa[j]=tab[i];                              // zapisanie liczby roznej od maxa do nowej tablicy
  52.                      suma=suma+tabnowa[j];                      // suma liczb roznych od maksa
  53.                      j++;                                       // zwiekaszanie ideksow nowej tablicy
  54.                    }
  55.                }
  56.  
  57.  
  58. printf("\nTablica po usunieciu max: ");
  59.     for(i=0;i<nowy;i++)
  60.     {
  61.         printf("%d ",tabnowa[i]);                                //wypisywanie elementow nowej tablicy
  62.     }
  63.     srednia=(double)suma/nowy;                                   // obliczanie sredniej, (double)- bo srednia nie jest liczba calkowita
  64.     printf("\nSrednia: %lf",srednia);                            // wysieetlenie sredniej
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement