Pocet ruznych cisel – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Pocet ruznych cisel – Pascal – Fórum – Programujte.comPocet ruznych cisel – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #1
-
0
-

Dobry den,

v textovém souboru mám uložena celá čísla oddělená mezerami. Počet čísel v souboru neznám, ale může být velmi velký tzn. nemůžu je ukládat do pole. Potřebuji zjistit počet různých hodnot obsažených v tomto souboru.

Mohl by mě někdo poradit? Jsem nováček.

Děkuji

Nahlásit jako SPAM
IP: 78.45.128.–
Reklama
Reklama
lukas.balaz0
Super člen
10. 1. 2015   #2
-
0
-

#1 Jakub
Vygoogli:
External sorting

Nahlásit jako SPAM
IP: 80.242.41.–
lukas.balaz0
Super člen
10. 1. 2015   #3
-
0
-

#1 Jakub
Alebo teda ak je tam veľmi veľa čísel ale majú rozumné veľkosti (napr. od 0 do milión), tak si urobiť pole dĺžky milión a pamätaj si v ňom počet jednotlivých čísel.

Nahlásit jako SPAM
IP: 80.242.41.–
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #4
-
0
-

Mám tam napsaný, že čísla nemůžu ukládat do pole tzn. že pole 0 až milion si udělat nemohu..

Nahlásit jako SPAM
IP: 78.45.128.–
lukas.balaz0
Super člen
10. 1. 2015   #5
-
0
-

#4 Jakub
akože vôbec nemôeš použiť pole (aj keď jeho veľkosť nezáleží na počte čísel, ale aké veľké môžu byť) ani si vytvoriť iný súbor ? Tak akože nie som si úplne istý ale neverím, že to pôjde.

Nahlásit jako SPAM
IP: 80.242.41.–
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #6
-
0
-

Nemůžu uložit všechna čísla, jinak můžu mít pole, ale ne moc velké.

Nahlásit jako SPAM
IP: 78.45.128.–
KIIV+42
God of flame
10. 1. 2015   #7
-
0
-

zadani za vsechny prachy.. no nastesti tu mame i jiny datovy struktury nez pole.. stromy, spojove seznamy...

sic naprosto nejrychlejsi je pro omezeny set hodnot pouzit pole od nejmensi po nejvetsi hodnotu a pocitat to do nej...  (a kdyby nahodou, tak se da jet treba po 10000 hodnotach, pak pokazdy skocit na zacatek souboru a pokracovat dalsima jako 10001...20000 .... )

Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #8
-
0
-

Program už mám, ale ještě ne pro moc čísel.

Zkusím to ještě nějak pořešit.

Nahlásit jako SPAM
IP: 78.45.128.–
Kit+11
Guru
10. 1. 2015   #9
-
0
-

#1 Jakub
Zkus s nejprve udělat histogram. Pro tvůj účel se dá zjednodušit na množinu. Potom jen spočítáš počet elementů.

Nahlásit jako SPAM
IP: 2a00:1028:83a0:37a6:a93d:...–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #10
-
0
-

Tak nevím jak to vyřešit bez pole...

Jsem ztracený :/

Nahlásit jako SPAM
IP: 78.45.128.–
Mircosoft+1
Věrný člen
10. 1. 2015   #11
-
+1
-
Zajímavé
Kit +

Jak velká můžou být ta čísla, která načítáš? Jestli se vejdou do 8 bitů (byte nebo shortint), tak to pohodlně vyřešíš množinou (var mnozina: set of byte). Každé načtené číslo do ní vložíš (mnozina:=mnozina+cislo) a ono už se automaticky zařídí, že v ní nic nebude víckrát. Nakonec v cyklu přes všechny možné hodnoty otestuješ, které z těch hodnot v množině jsou, a u těch, co jsou, zvýšíš nějaké počítadlo (for i:=... do if i in mnozina then inc(pocitadlo)).

Nevím, v jakém překladači pracuješ. Některé možná dovolí i větší rozsahy množin než 8 b.

Interně je množina bitové pole. Princip: máš pole čísel (bytů nebo wordů), jejich jednotlivé bity bereš jako booleany (číslo v množině je/není), index bitu znamená hodnotu čísla. Dá se to naprogramovat i ručně, já už to mám hotové a můžeš si to i stáhnout, akorát je v tom víc assembleru, než se od nováčků očekává :-).

Načtu ze souboru číslo, dejme tomu 50. Tak padesátý bit v poli nastavím na 1. Atd. Nakonec spočítám jedničkové bity.

V tomhle

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 2001:4c28:194:520:5e26:af...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Mircosoft+1
Věrný člen
10. 1. 2015   #12
-
0
-

Ty dva poslední odstavce ignoruj - vloudila se chybička při odesílání a nejde to editovat.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 2001:4c28:194:520:5e26:af...–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Jakub
~ Anonymní uživatel
865 příspěvků
10. 1. 2015   #13
-
0
-

Mircosofte napsal jsem ti do knihy návštěv na web.
Díky Jakub

Nahlásit jako SPAM
IP: 78.45.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Počet čísel — založil griddlecake

Počet čisel v reťazci... — založil Mishsuli

Pole různých objektů — založil jarda23

Propoejní různých jazyku — založil vojta

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý