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

Zadanie domowe z odcinka 11

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
440 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 679 wizyt
pytanie zadane 15 listopada 2015 w C i C++ przez Zangariev Początkujący (290 p.)
+1 głos
1 odpowiedź 1,176 wizyt
0 głosów
1 odpowiedź 556 wizyt
pytanie zadane 22 stycznia 2016 w Rozwój zawodowy, nauka, praca przez Eraos Nowicjusz (140 p.)

93,187 zapytań

142,201 odpowiedzi

322,012 komentarzy

62,514 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2127p. - dia-Chann
  2. 2092p. - Łukasz Piwowar
  3. 2079p. - Łukasz Eckert
  4. 2037p. - Tomasz Bielak
  5. 2006p. - rucin93
  6. 2006p. - Michal Drewniak
  7. 2005p. - Łukasz Siedlecki
  8. 1964p. - CC PL
  9. 1946p. - Adrian Wieprzkowicz
  10. 1901p. - Mikbac
  11. 1744p. - rafalszastok
  12. 1734p. - Anonim 3619784
  13. 1586p. - Dawid128
  14. 1520p. - Marcin Putra
  15. 1480p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...