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

Problem z zadaniem domowym z odcinka 11

Object Storage Arubacloud
+1 głos
175 wizyt
pytanie zadane 5 kwietnia 2016 w C i C++ przez Gravity Nowicjusz (150 p.)
edycja 5 kwietnia 2016 przez Gravity

Witam.

Odcinek już trochę ma więc przypominam o co chodziło.
Polecenie do zadania wyglądała tak:
Trzeba wprowadzić 5 liczb
Wyliczyć z nich średnią
Podać która z liczb jest najbliższa średniej

Mimo że było trzeba było zrobić program dla 5 liczb chciałem zrobić taki który można by łatwo edytować dla innej ilości liczb więc skorzystałem z tablic.

Stworzyłem cuś takiego.
 

#include <iostream>

using namespace std;

float l[5];
float r[5];
float srednia=0, sr, blis1, blis2=0;
int nr;

int main()
{
    cout << "Wpisz 5 liczb oddzielonych spacja: ";
    cin>>l[0]>>l[1]>>l[2]>>l[3]>>l[4];
        for (int i=0; i<=4; i++)
    {
        srednia=srednia+l[i];
        if(i==4)
        srednia=srednia/(i+1);
    }
    cout<<"Srednia wynosi: "<<srednia<<endl;
    for (int i=0; i<=4; i++)
    {
        r[i]=srednia-l[i];
        if (r[i]<0) r[i]=-r[i];
    }
    sr=r[0];
    blis1=l[0];
for (int i=1; i<=4; i++)
{
    if (r[i]<sr)
    {
        sr=r[i];
        blis1=l[i];
        nr=i;
    }
}
for (int i=0; i<=4; i++)
{
    if ((r[i]==sr) && (nr!=i))
    {
        blis2=l[i];
    }
}
if (blis2==0)
{
    cout<<"Liczba najblizej sredniej wynosi: "<<blis1<<endl;
}
else
{
    cout<<"Liczby najblizej sredniej wynosza: "<<blis1<<" i "<<blis2<<endl;
}
    return 0;
}



 

Zamysł jest taki żeby policzyć różnicę danych liczb od średniej a potem sprawdzić którą różnica jest najmniejsza i tą liczbę wybrać.
Program dobrze liczby średnią i różnicę ale ostatnia pętla nie chce działać poprawnie.
Wykonuje ją teoretycznie tyle razy ile trzeba. To znaczy 4 razy dla pętli for i teoretycznie odpowiednią ilość razy dla pętli if (tak mi się wydaje przynajmniej) ale mimo że warunek jest spełniony to nie wprowadza nowych liczb do zmiennych sr i blis

Mam nadzieję że pomożecie rozwiązać mi mój problem

@Edit
Siedziałem ze 2-3 godziny poprawiając wszystko i zastanawiając się co nie działa i dopiero jak zadałem pytanie zdałem sobie sprawę że równania w programowaniu muszą mieć określoną kolejność. Kod poprawiony program działa :)
Więc proszę tylko co ewentualnie mogę poprawić żeby usprawnić działanie programu :)

2 odpowiedzi

+3 głosów
odpowiedź 5 kwietnia 2016 przez draghan VIP (106,230 p.)
Witaj.

Cieszę się, że sam znalazłeś rozwiązanie. :) W programie jest kilka rzeczy do poprawienia, głównie stylistyka - ale nie tylko.

Jeszcze zanim zacznę: kod umieszczamy w bloczku "code" - to ostatnia dolna ikonka na pasku edytora.

Po pierwsze, nie używaj nigdy zmiennych globalnych. Jak...? Po prostu - wrzuć je w funkcję, np. main. W takim programie to mały problem, ale przy odrobinę bardziej skomplikowanym kodzie robi się już nieprzyjemnie.

Po drugie - nazywaj sensownie zmienne. Co to jest sr? Albo l? Albo r? Gdybym nie wiedział, co program ma robić, to ciężko byłoby się domyślić. Dobrze napisany kod jest jak opowiadanie. :)

Po trzecie, jak jeszcze przy nazwach jesteśmy, nie nazywaj zmiennych ani funkcji po polsku. To zła praktyka. Wszędzie na świecie pisze się identyfikatory po angielsku, jeśli chcesz się rozwijać w tym kierunku, to jest wręcz obowiązkowe.

Po czwarte - tu już mocno subiektywnie: przydałyby się spacje między operatorami, bo jest nieczytelnie.

Powodzenia w dalszej nauce. :)
komentarz 5 kwietnia 2016 przez Gravity Nowicjusz (150 p.)
Co do bloczku code to po prostu przy edycji tekstu w miarę jak poprawiałem sam kod już po otworzeniu tematu przy ostatnim razie zapomniałem o tym :)

1) Przyjmuje. Rzeczywiście domyślam się że później to może być problem
2,3) Tak już w czasie pisania mój brat po informatyce zwrócił mi uwagę że to nie dobry nawyk
0 głosów
odpowiedź 5 kwietnia 2016 przez Justyna Leżuch Nowicjusz (140 p.)
Cześć, możesz wstawić rozwiązanie? :) Pozdrawiam

Podobne pytania

0 głosów
3 odpowiedzi 239 wizyt
pytanie zadane 8 lipca 2017 w C i C++ przez Kacper Paluch Nowicjusz (150 p.)
0 głosów
3 odpowiedzi 250 wizyt
pytanie zadane 27 czerwca 2016 w C i C++ przez Kenshei Nowicjusz (120 p.)
0 głosów
1 odpowiedź 247 wizyt
pytanie zadane 27 czerwca 2016 w C i C++ przez programer Obywatel (1,190 p.)

92,551 zapytań

141,399 odpowiedzi

319,529 komentarzy

61,937 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...