Kezdőoldal » Számítástechnika » Programozás » C++ határozatlan mennyiségű...

C++ határozatlan mennyiségű változó?! Segítségre lenne szükségem! :D

Figyelt kérdés

Helló.

Olyan nehézségbe ütköztem, hogy szeretnék egy olyan programot írni (console application), amely kiszámolja a beírt számok médiáját, de ezt úgy szeretném megvalósítani, hogy a beírt számok random mennyiségüek legyenek (pl.: 124, 526, 3, 76, 9011 ), vagyis ne legyen meghatározva, hogy én hány számot adhatok meg.

Namost ahhoz, hogy átlagot számoljak belőlük, kéne tudnom, hogy hány darabról is van szó... .


Tehát hogy tudom megoldani a tetszőleges számú változók beolvasását illetve azok megszámlálását?


A válaszokat előre is kösz. :)



2013. márc. 21. 23:30
 1/10 anonim válasza:
0%

Mi az hogy médijáját?

Ez a random menyiség egy hülyeség a,random azt jelenti véletlen de te nem véletlen hanem korlátlan nagyságú számokról beszélsz.

Ha te adod meg a számokat akkor tudod a db számot ,zűrzavaros az egész...

2013. márc. 21. 23:51
Hasznos számodra ez a válasz?
 2/10 anonim válasza:

Ha előre tudod, hogy csak átlagot fogsz számolni, akkor nem kell tárolnod a beolvasott számokat.


Tárolsz 2 db számot: az összeget és a darabszámot. Minden beolvasott érték után növeled az összeget, és +1-et adsz a darabszámhoz. Ha a végére értél, osztod a kettőt, és kész az átlag.


Tetszőlegesen sok érték tárolása pedig dinamikus programozással lehetséges, de vannak a C++ nyelvbe beépített tárolók is ehhez (vector, list). Nyelvfüggő.

2013. márc. 22. 01:11
Hasznos számodra ez a válasz?
 3/10 anonim ***** válasza:

vagy ha nem listát akarsz csinálni, akkor írhatsz egy függvényt, ami azt csinálja, hogy berak egy tömbbe egy plusz számot: létrehoz egy új tömböt, minden eleme egyenlő a régi tömb elemével, és a +1 elem pedig az új érték lesz.


vagy lefoglalsz egy 1000 elemű tömböt, és akkor max 1000 számot írhat be a user, az azért elég sok. és egy indexxel meg tárolod hogy hány számot írt be.

2013. márc. 22. 02:17
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:

#3: erre nincsenek elegánsabb megoldások? Pl. vektorok?

A mediánhoz muszáj tárolni az elemeket. Én ehhez egy rendezett listát használnék, aminek aztán csak a megfelelő értékét kell lekérni és nem kell azzal foglalkozni, hogy a rendező algoritmust megírjam rá.

2013. márc. 22. 08:44
Hasznos számodra ez a válasz?
 5/10 iostream ***** válasza:

Ahogy fentebb írták, a C++ biztosít ehhez tárolókat. Legáltalánosabb a vector.

#include <vector>

#include <iterator>


std::vector<int> v;

std::copy(std::istream_iterator<int>(std::cin), std::istream_iterator<int>(), std::back_insterter(v));

std::sort(v);

std::cout << v[v.size() / 2] << '\n'; //nem veszi figyelembe ha páros számú elem van

2013. márc. 22. 09:52
Hasznos számodra ez a válasz?
 6/10 iostream ***** válasza:

Vagy még hatékonyabb (de akkor nem láttok back_insertert):


std::vector<int> v(std::istream_iterator<int>(std::cin), std::istream_iterator<int>());

2013. márc. 22. 10:06
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:
nemsemmi
2013. márc. 22. 10:25
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
Vazeratti, azzal kezdtem, hogy ha nem listát akar :)
2013. márc. 22. 12:08
Hasznos számodra ez a válasz?
 9/10 anonim ***** válasza:
#8: bocsi! :-$
2013. márc. 22. 12:11
Hasznos számodra ez a válasz?
 10/10 Ivan Iljics válasza:

Ha átlagot akarsz csak számolni, ahhoz semmi szükség a számok felesleges tárolására. Egy ciklusban bekéred a számokat amíg mondjuk nullát nem kap és egy-egy double-ban tárolja az összeget és a darabszámot.


Amikor végeztél elosztod a kettőt egymással és íme, a számok átlaga. :D

2013. márc. 25. 12:56
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!