matematykaszkolna.pl
liczba z wartoscia najbardziej zblizona do obliczonej sredniej arytmetycznej c++: proboje zrobic program w c++,w ktorym podaje się 5. liczb, program liczy srednia z tych 5. liczb i ma znalezc z podanych liczb, liczbe najblizsza sredniej prosilbym JEDYNIE o wskazówki
29 cze 15:53
c++: PS: moim celem jest wykonanie tego programu jedynie na bibliotece iostream
29 cze 15:55
jakubs: Czego nie wiesz ? Tworzysz tablicę, dodajesz 5 elementow, liczysz srednia i pozniej np. w jakiejś pętli sprawdzasz.
29 cze 15:58
c++: nie potrafie znalezc liczby, ktora bylaby najblizszej sredniej
29 cze 16:00
c++: probowalem cos z roznica sredniej i podanej liczby, ale nie zawsze znajduje poprawnie
29 cze 16:01
jakubs: Nie wiem czy to będzie najlepsze rozwiązanie, ale możesz utworzyć tymczasową tablicę i wrzucić do niej różnice tych podanych liczb i średniej. Później znaleźć element najmniejszy i będziesz wiedział, pod którym indeksem w tablicy jest liczba najbliższa średniej.
29 cze 16:02
c++: tak probowalem, ale tez nie wychodzi bo jesli np. srednia x = 50 i zalozmy ze mamy tylko a=50 b=100 c=−50 d=−100 to wtedy kolejno: 50−20= 30 50−100= −50 50−(−20)= 70 50−(−100)= 150 i program wtedy pokazuje na "100" bo wtedy roznica jest najmniejsza, a poprawna odp to '20' podobnie sie to ma, gdy srednia jest ujemna
29 cze 16:13
c++: chyba, ze nie to miales na mysli to wtedy nie wiem
29 cze 16:16
jc: Umieszczamy elementy w tablicy: x[0], x[1], ..., x[n−1]. s = śrdenia d = x[0] − s; j = 0; if( d < 0) d = −d; for(i = 1; i < n; i++){ p = x[i] − s; if( p < 0 ) p = − p; if( p < d ) { d = p; j = i; } } x[ j ] będzie leżał najbliżej średniej emotka
29 cze 16:30
c++: GENIALNE! dzieki emotka
29 cze 22:28
c++: a masz moze pomysl na rownie sprytnie kawałek kodu aby program pokazywał 2. mozliwosci(oczywiscie jesli sie trafia na zasadzie ex aequo) ?
30 cze 00:02
jc: Dla 5 elementów to pewnie można coś specjalnego wymyśleć. Ostatecznie 5 elementów można posortować, a wtedy wszystko staje się prostsze.
30 cze 00:32
c++: tak tez pokombinuje, dzieki
30 cze 00:50
Dziadek Mróz: #include <iostream> int m_abs(int); int main(int argc, char* argv[]) { int *tab = new int[5]; int X = 0; for (size_t i = 0; i < 5; i++) { std::cin >> tab[i]; X += tab[i]; } X /= 5; std::cout << "Srednia: " << X << std::endl; int d = m_abs(X − tab[0]); for (size_t i = 1; i < 5; i++) { d = m_abs(X − tab[i]) < d ? m_abs(X − tab[i]) : d; } std::cout << d << std::endl; delete[] tab; return 0; } int m_abs(int x) { if (x < 0) { return −x; } else { return x; } }
30 cze 12:11
c++: co prawda moj kompilator nie kompiluje Twojego kodu, ale z tego co widze to chyba podany program nie uwzglednia sytuacji ex aequo, a to jest moim problemem bo glowny "mechanizm" swietnie mi juz przedstawil jc
1 lip 20:12
c++: mam juz "zarys" rozwiazania tj. sortowanie babelkowe, ale dopiero za chwile jak sie go naucze
1 lip 20:17
jc: Właśnie zauważyłem, że jak się kopiuje, to minus nie jest prawidłowym minusem, aby działało nalezy skasować skopiowany minus i wpisać nowy z klawiatury. Jak już mamy najmniejszą odległość, w programie oznaczoną literą d, to możemy przejść całą tablicę w poszukiwaniu elementów leżących w odległości d od średniej. for(int i = 0; i < n; i++) if ( x[ i ] == s − d || x[ i ] == s + d ) cout << x[i] << endl; Może się jednak pojawić problem związany z błedami numerycznymi ...
1 lip 22:07
Dziadek Mróz: proboje zrobic program w c++,w ktorym podaje się 5. liczb, program liczy srednia z tych 5. liczb i ma znalezc z podanych liczb, liczbe najblizsza sredniej można jeszcze inaczej: int liczba = tab[0]; int d = m_abs(X − tab[0]); for (size_t i = 1; i < 5; i++) { m_abs(X − tab[i]) < d ? (d = m_abs(X − tab[i]), liczba = tab[i]) : 0; } std::cout << "d: " << d << " liczba: " << liczba << std::endl; Dla zbiorów: 1. tab: −3 −1 −5 0 −5 Srednia: −2 d: 1 liczba: −3 2. tab: 7 9 −9 −6 7 Srednia: 1 d: 6 liczba: 7 3. tab: 7 6 2 2 2 Srednia: 3 d: 1 liczba: 2 4. tab: −9 −2 6 7 5 Srednia: 1 d: 3 liczba: −2
2 lip 13:38