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

Suma arytmetyczna i znalezienie najbliższej liczby do średniej

Object Storage Arubacloud
0 głosów
396 wizyt
pytanie zadane 19 listopada 2018 w C i C++ przez Sledziux Początkujący (250 p.)

Cześć, od kliku dni próbuje zrobić program który obliczy średnią 5 liczb a następnie wypisze mi na ekranie liczbę najbliższą do średniej.

Co robię źle? Dopiero zaczynam programować, wiec nie nazywam jakoś

#include <iostream>
#include <cmath>

using namespace std;
float liczby[5];
float srednia;
float roznica[5];
float m;
float x;
float h;
int main()
{
    cout << "Wpisz 5 liczb: ";
    cin>>liczby[0]>>liczby[1]>>liczby[2]>>liczby[3]>>liczby[4];

    srednia = (liczby[0]+liczby[1]+liczby[2]+liczby[3]+liczby[4])/5;

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


    for(int i=0; i<=4; i++)
    {
       roznica[i] = liczby[i] - srednia;
        cout<<roznica[i]<<endl<<endl;
    }

    m = abs(roznica[0]);

    if(m>abs(roznica[1]))
    {
        m = abs(roznica[1]);
    }


    if(m>abs(roznica[2]))
    {
        m = abs(roznica[2]);
    }


    if(m>abs(roznica[3]))
    {

        m = abs(roznica[3]);
    }

    if(m>abs(roznica[4]))
    {
        m = abs(roznica[4]);
    }




   if(m<=0) x = (m + srednia)*(-1);




    else if(m>=0) x = m + abs(srednia);






    cout<<"Najblizsza: "<<x;




    return 0;
}

specjalnie zmiennych.

2 odpowiedzi

+1 głos
odpowiedź 21 listopada 2018 przez kamerek Obywatel (1,260 p.)
wybrane 23 listopada 2018 przez Sledziux
 
Najlepsza

Ostanie dwie instrukcje warunkowe if, else if się nakładają. Z pierwszej usuń znak = żeby było: if(m<0) .

Czy program ma zwracać dowolną liczbę najbliższą średniej czy liczbę najbliższą średniej z pośród wprowadzonych? Twój zwraca dowolną najbliższą liczbę.

Jeżeli chcesz żeby o była jedna z wpisanych wcześniej liczb to musisz odnosić się do tablicy liczby[]. Proponuję takie rozwiązanie (moje dodatki w kodzie oznaczyłem pogrubionym drukiem):

#include <iostream>
#include <cmath>

using namespace std;
float liczby[5];
float srednia;
float roznica[5];
float m;
float x;
float h;
int main()
{
    cout << "Wpisz 5 liczb: ";
    cin>>liczby[0]>>liczby[1]>>liczby[2]>>liczby[3]>>liczby[4];

    srednia = (liczby[0]+liczby[1]+liczby[2]+liczby[3]+liczby[4])/5;

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

    for(int i=0; i<=4; i++)
    {
       roznica[i] = liczby[i] - srednia;
       //cout<<roznica[i]<<endl<<endl;
    }

    m = abs(roznica[0]);
    x=liczby[0];

    if(m>abs(roznica[1]))
    {
        m = abs(roznica[1]);
        x=liczby[1];
    }

    if(m>abs(roznica[2]))
    {
        m = abs(roznica[2]);
        x=liczby[2];
    }

    if(m>abs(roznica[3]))
    {
        m = abs(roznica[3]);
        x=liczby[3];
    }

    if(m>abs(roznica[4]))
    {
        m = abs(roznica[4]);
        x=liczby[4];
    }

   //if(m<0) x = (m + srednia)*(-1);
   //else if(m>=0) x = m + abs(srednia);

    cout<<"Najblizsza: "<<x;
    return 0;
}

 

+1 głos
odpowiedź 19 listopada 2018 przez Maciej Złotorowicz Gaduła (4,230 p.)
Polecam używać piblioteki math a nie cmath (math jest nowsza i dedykowana C++) Aby policzyć średnią musisz jedynie zsumować wszystkie te liczby i podzielić je na 5 można to zrobić tak:
(a+b+c+d+e)/5 i to masz zrobione dobrze. Aby coś zaokrąglić możesz użyć funkcji: round(wartość do zaokrąglenia) i ona zwraca wartość zaokrągloną.

Podobne pytania

0 głosów
1 odpowiedź 271 wizyt
+1 głos
1 odpowiedź 538 wizyt
0 głosów
2 odpowiedzi 739 wizyt
pytanie zadane 17 sierpnia 2016 w C i C++ przez diov Nowicjusz (150 p.)

92,556 zapytań

141,404 odpowiedzi

319,561 komentarzy

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

...