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

Znajdowanie najmniejszej liczby

Object Storage Arubacloud
+1 głos
1,161 wizyt
pytanie zadane 11 listopada 2015 w C i C++ przez Evelek Nałogowiec (28,960 p.)

Chcąc rozwiązać zadanie z Kurs C++ odc. 11: Znajdowanie największej liczby Pana Mirosława Zelenta, polegające na znalezieniu liczby, która jest najbliższa średniej z 5 liczb, napisałem taki długi program. Wszystko opisane w komentarzach. Brakuje mi jednego. Wiedzy na temat jak działa kod w liniach 100-104. Wziąłem go z innego przykładu i zmieniłem na swoje potrzeby, ale nie do końca go rozumiem, co się staje w przypisaniu przez == a co przez przypisanie przez =. Jeśli ktoś może to proszę o opisanie tego, wszystko napisane przeze mnie oprócz tych kilku linijek których do końca nie rozumiem jak działają.

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

//zmienne:
double a, b, c, d, e;
double m, n, l, x1, x2, x3, x4, x5; //zmienna dodatkowa
double srednia;

int main()
{
//uzytkownik podaje liczby a, b, c, d, e
    cout << "Podaj 5 liczb: " << endl;
    cout << "a: ";
    cin >> a;
    cout << "b: ";
    cin >> b;
    cout << "c: ";
    cin >> c;
    cout << "d: ";
    cin >> d;
    cout << "e: ";
    cin >> e;

//obliczenie srednia
    srednia = (a + b + c + d + e) / 5;
    cout << "Srednia: " << srednia << endl;

//znajdujemy najwieksza liczbe wsrod podanych
    m = a;
    if (b>m) m = b;
    if (c>m) m = c;
    if (d>m) m = d;
    if (e>m) m = e;

    cout << "Najwieksza z liczb to: " << m << endl;

//znajdujemy wartosci bezwględne:
    (x1 = srednia - a);
    if (x1 < 0)
    {
        cout << "Odleglosc liczby a do sredniej wynosi: " << -x1 << endl;
        x1 = -x1;
    }
    else
    {
        cout << "Odleglosc liczby a do sredniej wynosi: " << x1 << endl;
    }
    (x2 = srednia - b);
    if (x2 < 0)
    {
        cout << "Odleglosc liczby b do sredniej wynosi: " << -x2 << endl;
        x2 = -x2;
    }
    else
    {
        cout << "Odleglosc liczby b do sredniej wynosi: " << x2 << endl;
    }
    (x3 = srednia - c);
    if (x3 < 0)
    {
        cout << "Odleglosc liczby c do sredniej wynosi: " << -x3 << endl;
        x3 = -x3;
    }
    else
    {
        cout << "Odleglosc liczby c do sredniej wynosi: " << x3 << endl;
    }
    (x4 = srednia - d);
    if (x4 < 0)
    {
        cout << "Odleglosc liczby d do sredniej wynosi: " << -x4 << endl;
        x4 = -x4;
    }
    else
    {
        cout << "Odleglosc liczby d do sredniej wynosi: " << x4 << endl;
    }
    (x5 = srednia - e);
    if (x5 < 0)
    {
        cout << "Odleglosc liczby e do sredniej wynosi: " << -x5<< endl;
        x5 = -x5;
    }
    else
    {
        cout << "Odleglosc liczby e do sredniej wynosi: " << x5 << endl;
    }

//najmniejsza odleglosc n do sredniej wynosi:

    n = x1;
    if (x2<n) n = x2;
    if (x3<n) n = x3;
    if (x4<n) n = x4;
    if (x5<n) n = x5;

//Jak dziala te 5 ponizszych linii kodu?
    if(n==x1) l=a; 
    if(n==x2) l=b;
    if(n==x3) l=c;
    if(n==x4) l=d;
    if(n==x5) l=e;

    cout << "Najmniejsza odleglosc wynosi: " << n << " dla liczby " << l << endl;

    return 0;
}

 

3 odpowiedzi

+2 głosów
odpowiedź 11 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)
wybrane 31 marca 2017 przez Evelek
 
Najlepsza

Zobacz, że zmiennej l nie przypisujesz żadnej wartości, aż do momentu, w którym jest ona wykorzystywana do wypisania ostatniego komunikatu. Po prostu ten kawałek kodu powoduje nadanie wartości zmiennej l, która odpowiada liczbie, której odpowiada najmniejsza odległość x.

+2 głosów
odpowiedź 11 listopada 2015 przez niezalogowany
== to operator porównania czyli w tych ifach sprawdza się czy n jest równe x1 i jeśli tak to zmiennej l jest przypisywana(= to operator przypisania) wartość zmiennej a. I w kolejnych liniach jest to samo tylko dla innych zmiennych.
+2 głosów
odpowiedź 11 listopada 2015 przez Evelek Nałogowiec (28,960 p.)

Coś mi się tu nie podoba. Dajmy za przykład liczby 4, 7, 12, 17, 22 wpisane do konsoli. Średnia wyjdzie nam 12.4. Zmienna n która w tym przypadku wyjdzie 0.4 w kodzie mówi nam, jaka jest najmniejsza odległość, w tym wypadku od liczby 12 do średniej, ponieważ to liczba 12 jest najbliższa średniej. Ale program musi określić jakoś, od jakiej to liczby ta odległość wynosi właśnie 0.4.

////

Zrozumiałem już jak to opisaliście panowie po przeczytaniu kilka razy....

Linijki których nie rozumiałem mówią nam, że: jeśli n czyli 0.4 jest równe x1 to program zmiennej l przypiszę zmienną a.

A mi się ciągle wydawało, że w żadnym wypadku nie spełnia się warunek n==x1, n==x2 itd. W tym kodzie n to najmniejsza odległość od średniej, a właśnie ta najmniejsza odległość znajduje się w jednej ze zmiennych x1, x2, x3, x4 lub x5. Dobra, w pełni to już rozumiem. Dziękuje.

 

Podobne pytania

0 głosów
2 odpowiedzi 3,088 wizyt

92,617 zapytań

141,466 odpowiedzi

319,783 komentarzy

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

...