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

Program wypisujący liczbę najbliższą do średniej 5 podanych

Object Storage Arubacloud
0 głosów
144 wizyt
pytanie zadane 3 lutego 2017 w C i C++ przez ofnero Użytkownik (830 p.)

Na wstępie dodam, że ten wątek był już omawiany na forum, ale ja zrobiłem go na swój sposób i potrzebuję kilku informacji. Od początku, program działa, testowany na przykładach Pana Mirosława z kursu C++, ale nie do końca. Jeśli podamy liczby 6.5, 3.5, 0, 15 , 0, gdzie średnia wyniesie 5 to program zwróci tylko 6.5. Proszę o porady, jak sobie z tym poradzić. Kod poniżej:

#include <iostream>


int main()
{
    float srednia;
    float suma;
    float liczby[5];
    float naj;

    int licznik = 1;
    for(int i=0; i<5; i++)
    {
        std::cout << "Podaj " << licznik << " liczbe: ";
        std::cin >> liczby[i];
        licznik++;
    }


    for(int i=0; i<5; i++)
    {
        suma += liczby[i];
    }

    srednia = suma/5;


    std::cout << "Srednia wynosi: " << srednia << std::endl;
    float odl0,odl1,odl2,odl3,odl4;

    if(liczby[0] >= srednia)
        odl0 = liczby[0] - srednia;
        else odl0 = srednia - liczby[0];
    if(liczby[1] >= srednia)
        odl1 = liczby[1] - srednia;
        else odl1 = srednia - liczby[1];
    if(liczby[2] >= srednia)
        odl2 = liczby[2] - srednia;
        else odl2 = srednia - liczby[2];
    if(liczby[3] >= srednia)
        odl3 = liczby[3] - srednia;
        else odl3 = srednia - liczby[3];
    if(liczby[4] >= srednia)
        odl4 = liczby[4] - srednia;
        else odl4 = srednia - liczby[4];

    
    float ok = odl0;
    
    
    naj = liczby[0];
    if(odl1 < ok)
        {
            naj = liczby[1];
            ok = odl1;
        }
    if(odl2 < ok)
        {
            naj = liczby[2];
            ok = odl2;
        }
    if(odl3 < ok)
        {
            naj = liczby[3];
            ok = odl3;
        }
    if(odl4 < ok)
        {
            naj = liczby[4];
            ok = odl4;
          }


    std::cout << "Najblizsza liczba do sredniej to " << naj;
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 3 lutego 2017 przez Gracjan Pasik Obywatel (1,810 p.)
Zamiast < daj <= i zamiast wpisywać do zmiennej od razu w ifie cout daj.
komentarz 3 lutego 2017 przez ofnero Użytkownik (830 p.)
Chodzi o te, w których program wyznacza już najbliższą liczbę? Jeśli tak to jak to zrobić, bo w zależności od podanych niektóre ify się nie wykonują i nie za bardzo rozumiem.
0 głosów
odpowiedź 3 lutego 2017 przez Gracjan Pasik Obywatel (1,810 p.)
#include <iostream>


int main()
{
    float srednia = 0;
    float liczby[5];

    int licznik = 1;
    for(int i=0; i<5; i++)
    {
        std::cout << "Podaj " << i << " liczbe: ";
        std::cin >> liczby[i];
    }


    for(int i=0; i<5; i++)
    {
        srednia += liczby[i];
    }

    srednia /= 5;

    std::cout << "Srednia wynosi: " << srednia << std::endl;

    float najmniejszaRoznica;
    for (int i=0;i<5;i++)
    {
        if (liczby[i] < srednia)
        {
            liczby[i]*=-1;
        }
        if (najmniejszaRoznica > (liczby[i]-srednia))
        {
            najmniejszaRoznica = liczby[i]-srednia;
        }
    }


    std::cout << "Najblizsza liczba do sredniej to " << (najmniejszaRoznica + srednia) *-1;
    return 0;
}

Tutaj masz jak to powinno wyglądać, jak czegoś nie rozumiesz to pytaj.

komentarz 3 lutego 2017 przez ofnero Użytkownik (830 p.)
Niestety to nie działa jak należy. Np po wpisaniu liczb 1, 2 , 3 ,4 , 5, których średnia wynosi 3 wyświetla nam 2 zamiast 3 która wprawie jest równa średniej, a po wpisaniu liczb co napisałem w poście wyświetla samo 3.5, a zależy mi na wyświetleniu obu czyli 3.5 oraz 6.5.

Podobne pytania

0 głosów
1 odpowiedź 527 wizyt
0 głosów
3 odpowiedzi 642 wizyt
+1 głos
3 odpowiedzi 466 wizyt
pytanie zadane 3 stycznia 2016 w C i C++ przez CichoCiemny Początkujący (480 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...