Portál AbcLinuxu, 6. května 2025 15:50

Dotaz: C++ řešit pomocí While+pole

8.3.2015 17:37 Zbyneczek
C++ řešit pomocí While+pole
Přečteno: 735×
Odpovědět | Admin
Je dána posloupnost celých čísel ukočená 0. Spočtěte aritmetický průměr této

posloupnosti a zjistěte kolik čísel posloupnosti je menších než aritmetický průměr a

kolik čísel je větších než aritmetický průměr.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.3.2015 18:17 Johnny88
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Odpovědět | | Sbalit | Link | Blokovat | Admin

Naser si a dělej sám!

Řešení 3× (rADOn, bezprízorný, mimi.vx)
9.3.2015 08:45 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Uděláte za mě úkol?
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
9.3.2015 11:12 Jardík
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nezapomeň, že celá čísla jsou i čísla záporná. Jelikož v zadání není uveden rozsah možných čísel, musíš počítat s intervalem (-inf,+inf). K reprezentaci takových čísel neposkytuje standardní knihovna C++ žádné hotové řešení. Budeš potřebovat naprogramovat (předpokládám, že i toto je předmětem domacího úkolu) nějaký druh sčítání čísel s neomezeným rozsahem. Dále aritmetický průměr může být číslo, které není celé. Budeš tedy potřebovat implementovat dělení těchto čísel s neomezeným rozsahem tak, aby si mohl dostat výsledek jako zlomek. Desetinným číslům se radši vyhni. Bohužel spočení tohoto průměru je úkolem, nelze tedy jen udělat jakési dělení se zbytkem a získat tak zaokrouhlené číslo a porovnat se zadanými čísli (k čemuž bys desetinnou část opravdu nepotřeboval, protože jsou daná čísla celá. Toto řešení bude asi hodně pomalé s velkým množstvím velkých čísel. Takováto zadání jsou většinou na palici a světší o demenci vyučujících, kteří nepřemýšlí, a nebo chtějí vypéct studenty, léčí si na nich kompexy a dávají jim známku F, když ti to pak nevezme číslo 12154115516618453352400130160162612162512162619621523135243432631624323132316323123413213321605521326462432043231608520513243621859927495279583362190612126246523264616223332462152051626122190160265496245246526546265626452668182545745.
Jendа avatar 9.3.2015 19:04 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
+1 :-D
9.3.2015 20:24 MadCatX
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
První problém řeší GMP, jejíž použití v C++ je jednoduché, ten druhý Euklidův algoritmus. Jmenovatelem zkráceného zlomku vyjadřujícího průměr pak vynásobím všechna čísla v posloupnosti a výsledek porovnám s čitatelem téhož zlomku. V principu bych ten zlomek mohl klidně nechat ve tvaru "součet čísel v posloupnosti" / "počet čísel v posloupnosti", ale asi by bylo hezké ten průměr i zobrazit.
Jendа avatar 9.3.2015 21:16 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Co když se ti zadané číslo nevejde do paměti?
9.3.2015 21:40 MadCatX
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
To se samozřejmě stát může, ale na straně algoritmu tohle IMHO můžu ošetřit maximálně vrácením nějakého E_NUM_TOO_LONG.
10.3.2015 19:14 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Třeba má pod stolem Turingův stoj :)
21.3.2015 23:51 Marvin | blog: im_depressed | Gallifrey
Rozbalit Rozbalit vše Re: C++ řešit pomocí While+pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
A = []
while 1:
        a = int(raw_input())
        if not a: break

        A.append(a)

average = 1.0*sum(A) / len(A)

print "Average:", average
print ">:", len([i for i in A if i > average])
print "<:", len([i for i in A if i < average])

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.