Wyznaczyc mediane

0

Witam, ucze sie C++ z ksiazki i mam tam takie zadanie > Jeśli medianę szerego liczb zdefiniujemy jako "liczbę, od której większych i mniejszych jest dokładnie tyle samo elemetnów" , popraw program aby zawsze drukował dokładnie medianę. Wskazówka: mediana nie musi być jednym z elementów szeregu >
mam takie coś ale nie mam pojecia jak zapisać to, aby z liczb parzystych brał dwie srodkowe liczby i wyciagnal z nich srednia, % nie moge zastosowac bo musi byc na double

int main()
{
   vector<double> temps;
   double temp;

   while (cin>>temp)
           temps.push_back(temp);

   //obliczanie sredniej temperatur
   double sum=0;
   for (int i=0; i<temps.size(); i++)
       sum+=temps[i];
   cout<<"Œrednia temperatura wynosi: "<<sum/temps.size()<<endl;

   // obliczanie mediany temperatur
   sort(temps.begin(),temps.end());  //sortowanie wektora temps "od poczatku do konca"
       cout<<"Mediana: "<<temps[temps.size()/2]<<endl;
   return 0;
}

1

Nie wiem czy dobrze zrozumiałem, ale nie chodzi ci o coś takiego?


(temp[temp.size() / 2]  + temp[(temp.size() / 2) + 1]) / 2

1

Sprawdź sobie ilość czy jest parzysta. Jeśli tak to mediana = element size / 2 - 1 + element size / 2 a jeśli nie to mediana = floor(element(size / 2))

1

Intryguje mnie co jest (wg definicji z pierwszego postu) medianą dwuelementowego zbioru: {1, 7777777777777777777777777}.

1 użytkowników online, w tym zalogowanych: 0, gości: 1