• 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

42 Warsaw Coding Academy
0 głosów
502 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ź 332 wizyt
+1 głos
1 odpowiedź 874 wizyt
0 głosów
2 odpowiedzi 1,237 wizyt
pytanie zadane 17 sierpnia 2016 w C i C++ przez diov Nowicjusz (150 p.)

93,385 zapytań

142,384 odpowiedzi

322,540 komentarzy

62,746 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...