• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Srednia artmetyczna co jest nie tak ?

Aruba Cloud - Virtual Private Server VPS
0 głosów
211 wizyt
pytanie zadane 21 marca 2020 w SPOJ przez Sashimo Użytkownik (740 p.)

Ok nie mam pomysłu już czemu nie chce przyjąć

 

zadanie:https://pl.spoj.com/problems/PP0604A/

 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{

      int t,n;
      cin>>t;
      for(int i=0; i<t; i++)
      {
          cin>>n;
          double *tablica=new double[n];
          double srednia=0;


        if ((n>0)&&(n<100))
        {


          for(int j=0; j<n; j++)
          {
              cin>>tablica[j];

              if ((tablica[j]>=0)&&(tablica[j]<=100))
              {
              srednia+=tablica[j];
              }
              else break;

          }

          srednia=srednia/n;

          double najmniejsza=tablica[0];

          for(int k=1;k<n;k++)
          {
              if((fabs(tablica[k]-srednia))<(fabs(tablica[k-1]-srednia)))
              najmniejsza=tablica[k];

          }

          cout<<najmniejsza<<endl;

        }

      }




    return 0;
}

 

komentarz 21 marca 2020 przez tkz Nałogowiec (42,020 p.)
Deklarujesz dynamicznie, a gdzie zwalniasz?
komentarz 21 marca 2020 przez Sashimo Użytkownik (740 p.)

blush


          cout<<najmniejsza<<endl;
        }
         delete [] tablica;
      }
    return 0;
}

tak jest dobrze ?

komentarz 21 marca 2020 przez tkz Nałogowiec (42,020 p.)
Tak.

1 odpowiedź

0 głosów
odpowiedź 21 marca 2020 przez Whistleroosh Maniak (57,400 p.)
wybrane 21 marca 2020 przez Sashimo
 
Najlepsza

Nie bardzo rozumiem na jakiej zasadzie wybierasz tę liczbę najbliższą średniej. Można łatwiej to zrobić tak, że trzymasz zmienną, w której znajduje się indeks do komórki, o wartości najblizszej średniej. I teraz linie 40. zamień na:

if((fabs(tablica[k]-srednia))<(fabs(tablica[best_id]-srednia)))
       best_id = k

Gdzie to best_id to zmienną o której mówiłem wyżej. Na początku powinna mieć wartość 0.

komentarz 21 marca 2020 przez Sashimo Użytkownik (740 p.)

jak mam  int best_id = k; przyrównać do zera jak k =1

 

for(int k=1;k<n;k++)
          {
              int best_id=0;
                best_id = k;
              if((fabs(tablica[k]-srednia))<(fabs(tablica[best_id]-srednia)))


              najmniejsza=tablica[k];

          }

tylko moim zdaniem to nie ma sensu

komentarz 21 marca 2020 przez Whistleroosh Maniak (57,400 p.)

Coś za bardzo komplikujesz. Tak wystarczy:

int best_id=0;
 
for(int k=1;k<n;k++)
{
      if((fabs(tablica[k]-srednia))<(fabs(tablica[best_id]-srednia)))
              best_id = k;
 }
 
   cout<<tablica[best_id]<<endl;

 

komentarz 21 marca 2020 przez Sashimo Użytkownik (740 p.)
ok zaliczyło ale muszę powiedzieć że nic już z tego nie rozumiem XD jutro to na spokojnie muszę przeanalizować

Podobne pytania

0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 23 sierpnia 2018 w SPOJ przez Lviwer Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 286 wizyt
pytanie zadane 10 kwietnia 2017 w C i C++ przez ChiriChiri Obywatel (1,260 p.)
0 głosów
2 odpowiedzi 214 wizyt

93,327 zapytań

142,323 odpowiedzi

322,396 komentarzy

62,657 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...