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

Zadanie domowe z odcinka 11

Object Storage Arubacloud
0 głosów
398 wizyt
pytanie zadane 9 grudnia 2015 w C i C++ przez baqazan Nowicjusz (230 p.)

Hej, zrobiłem zadanie z odcinka 11 i wygląda na to, że program działa jak należy. Odległość danej liczby od średniej liczę za pomocą funkcji (która tak naprawde jest pozostałością po funkcji która liczyła tą odległość w zależności od znaku liczb, co - jak odkryłem później - było niepotrzebne). Jeśli macie jakieś zastrzeżenia lub wskazówki dotyczące co mógłbym poprawić proszę o komentarz. Z góry dziękuje ;D

 



#include <iostream>
#include <math.h>

using namespace std;

float a,b,c,d,e;
float suma, sr;
float m,s;

float check(float x)
{
    return fabs(sr-x);
}

int main()
{
    cout << "Podaj 5 liczby rozdzielone spacja: ";
    cin>>a>>b>>c>>d>>e;

    suma = a+b+c+d+e;
    sr = suma / 5;

    cout<<"Srednia podanych liczb wynosi: "<<sr<<endl;

    m=a;

    if(check(m)>check(b)) m=b;
    else if(check(m) == check(b)) s=b;
    if(check(m)>check(c)) m=c;
    else if(check(m) == check(c)) s=c;
    if(check(m)>check(d)) m=d;
    else if(check(m) == check(d)) s=d;
    if(check(m)>check(e)) m=e;
    else if(check(m) == check(e)) s=e;

    if(check(m) == check(s) && (m!=s))
    {
        cout<<"Liczby najblizej sredniej to: "<<m<<" i "<<s;
    }
    else
    {
        cout<<"Liczba najblizej sredniej jest: "<<m;
    }

    return 0;
}

 

4 odpowiedzi

+1 głos
odpowiedź 9 grudnia 2015 przez jeremus Maniak (59,720 p.)
skoru już użyłeś funkcji check to wypadałoby przkazać do niej 2 parametry , a nie używać zmiennej globalnej sr

oczywiście nie wpływa to na wynik, ale to tak dla zasady

 

pozdrawiam
+1 głos
odpowiedź 6 września 2019 przez Michalski9 Początkujący (390 p.)

Witam, ja mam podobnie do kolegów, może trochę rozleglej i więcej mój kod drukuje na ekran, żeby można było łatwiej rozkminić, ale dzięki temu chyba latwiej to ogarnąć. 

int main()
{
    float liczby[5];
    float suma=0,roznicaTmp;

    cout<<"Podaj 5 liczb: "<<endl;
    for(int i=0;i<5;i++)
    {
        cin>>liczby[i];
        suma+=liczby[i];
    }
    bool test=false;
    float srednia=suma/5;
    float najblizej,najblizej2;
    roznicaTmp=fabs(liczby[0] - srednia);
    najblizej=liczby[0];
    cout<<"==========Srednia to: "<<srednia<<endl;
    for(int i=1;i<5;i++)
    {
        cout<<"Wartosc bezwzgledna "<<liczby[i]<<" - "<<srednia<<" : "<<fabs(liczby[i] - srednia)<<endl;
        if(roznicaTmp>fabs(liczby[i] - srednia))
        {
            cout<<"aktualnia roznica: "<<fabs(liczby[i] - srednia)<<" aktualne i: "<<i<<endl;
            roznicaTmp=fabs(liczby[i] - srednia);
            najblizej=liczby[i];
        }else if(roznicaTmp==fabs(liczby[i] - srednia))
        {
            najblizej2=liczby[i];
            test=true;
        }
    }
    


    if(test && najblizej!=najblizej2)
    {
        cout<<endl<<"==========najblizej sredniej : "<<najblizej<<" i "<<najblizej2;
    }else
    {
        cout<<endl<<"==========najblizej sredniej : "<<najblizej;
    }
    return 0;
}

 

+1 głos
odpowiedź 6 listopada 2020 przez artxyz123 Nowicjusz (160 p.)
edycja 7 listopada 2020 przez artxyz123

Wracając do zadania, to jest chyba najprostszy kod do tego zadania, działa 100% 

 

#include <iostream>

using namespace std;

float a, b, c, d, e, m, s;

int main()
{
    cout << "Podaj 5 liczb zmiennoprzecinkowych rozdzielonych spacjami" << endl;
    cin >> a >> b >> c >> d >> e; 

    s = (a+b+c+d+e)/5;  
    cout << "Srednia arytmetyczna podanych liczb wynosi: " << s << endl;

    m=abs(s-a); ///wykorzystanie roznicy wartosci bezwglednej wyliczonej sredniej arytmetycznej     
                /// i wpisanych liczb do ocenienia liczby najbliższej wartosci sredniej      
               ///arytmetycznej

    if (m>abs(s-b)) m=abs(s-b);
    if (m>abs(s-c)) m=abs(s-c);
    if (m>abs(s-d)) m=abs(s-d);
    if (m>abs(s-e)) m=abs(s-e);

/// Porownanie wyniku uzyskanego z kodu powyzej i wypisanie liczby lub dwoch liczb najblizszych /// wartosci sredniej arytmetycznej, warunki rowniez eliminuje powtarzanie tej samej liczby
    if (m==abs(s-a))                                                   
        cout << "Liczba njblizsza sredniej to: " << a << endl;
    if ((m==abs(s-b)) && (a-b)!=0)                                     
        cout << "Liczba njblizsza sredniej to: " << b << endl;
    if ((m==abs(s-c)) && (a-c)!=0 && (b-c)!=0)                         
        cout << "Liczba njblizsza sredniej to: " << c << endl;
    if ((m==abs(s-d)) && (a-d)!=0 && (b-d)!=0 && (c-d)!=0)             
       cout << "Liczba njblizsza sredniej to: " << d << endl;
    if ((m==abs(s-e)) && (a-e)!=0 && (b-e)!=0 && (c-e)!=0 && (d-e)!=0) 
       cout << "Liczba njblizsza sredniej to: " << e << endl;

return 0;
}

 

0 głosów
odpowiedź 30 maja 2016 przez SpaceBacK Nowicjusz (160 p.)

Witam! Podrzucam swoją wersje, może sie przydać jeśli ktoś by chciał przebudować program na więcej zmiennych. Oczywiście mile widziane uwagi, i uproszczenia mojej wersji. Pozdrawiam! :)



#include <iostream>
#include <math.h>

using namespace std;

float lb[5];
float suma=0,srednia;
float roznica;
float m;
float liczba1,liczba2;
bool test;
int main(int argc, char** argv) {
	cout<<"podaj 5 liczb odzielajac je spacja:";
	for(int i=0;i<5;i++)
	{
	cin>>lb[i];
	suma+=lb[i];
	}
srednia=suma/5;
cout<<"srednia wynosi:"<<srednia<<endl;
m=fabs(srednia-lb[0]);
liczba1=lb[0];
test=false;
for(int i=1;i<5;i++)
{

	if (fabs(srednia-lb[i])<m)
	{
 	liczba1=lb[i];
 	m=fabs(srednia-lb[i]);
	}
	else if (fabs(srednia-lb[i])==m)
	{
	liczba2=lb[i];
	test=true;
	
	}
}
if(test && liczba1!=liczba2)
cout<<"liczby najblizsze sredniej to "<< liczba1<<" i "<<liczba2;
else
cout<<"liczba najblizsza sredniej to "<< liczba1;
	return 0;
}

 

komentarz 6 września 2019 przez Michalski9 Początkujący (390 p.)
Dzięki, długo kombinowałem jak wyświetlić dwie najbliższe liczby, zamiast jednej, nie wpadłem na to by sprawdzić równość róźnic.
komentarz 7 listopada 2020 przez artxyz123 Nowicjusz (160 p.)
Nie ma sprawy!, musiałem się przespać :), żeby mi to głowy wpadło

Chciałem specjalnie zrobić kod bez funkcji, tablic, pętli.

Podobne pytania

0 głosów
2 odpowiedzi 621 wizyt
pytanie zadane 15 listopada 2015 w C i C++ przez Zangariev Początkujący (290 p.)
+1 głos
1 odpowiedź 978 wizyt
0 głosów
1 odpowiedź 523 wizyt
pytanie zadane 22 stycznia 2016 w Rozwój zawodowy, nauka, praca przez Eraos Nowicjusz (140 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

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

...