
Program v Pascalu na Proceduru
Nemohl by mi, prosím, někdo pomoci s tímto programem? =o(
SESTAVTE PROCEDURU PRO NALEZENI DVOU NEJVETSICH CISEL Z DANE MNOZINY N CISEL A POUZIJTE JI PRO RESENI TETO ULOHY: JE DANO N CISEL. NAJDETE DVE NEJVETSI Z NICH A ZE ZBYVAJICICH CISEL OPET DVE NEJVETSI.
Vím, jak najít dvě největší čísla, ale nedokážu to aplikovat v proceduře...
Děkuju za jakoukoliv pomoc... =o)
OMG co mate vsetci s triedenim. On NEMA za ulohu triedit. Zlozitost najlepsieho triedenia je minimalne O(N x logN), zlozitost toho co ma robit je O(N). Pri 1000 bilionoch cisel by mohol byt rozdiel roky. A potom preco je windows tak pomaly, tam asi tiez kvoli kazdej hovadine mrkvoprogramatori triedia pol disku :). Na komara sa nechodi s gulometom.
Kdyz uz na komara s kulometem tak at je to rychlejsi chce to gattling
Dovolím si podotknout, že zadání patří zadavateli omlátit o hlavu. Není specifikováno o jaký čísla jde - celý, přirozený, reální, komplexní, ... Tudíž to dle mých znalostí nelze vyřešit.
Pavel
Posunuješ problém jinam, jenom stručně :
obecné reálné číslo stroji nezadáš, nanejvýš computable number :
Computable_number
Uspořádání komplexních čísel bys musel nejdřív definovat, to se udělat dá, ale tzv. dobré uspořádání sice existuje podle axiomu výběru, ale nejen já bych ho rád viděl.
Stačí tedy, když zůstaneme u racionálních čísel .
Ovšem na tohle všechno se zadavatel původního dotazu určitě neptal.
Neposunuju problém jinam, s tím rozhodně nesouhlasím. Zadání musí být jednoznačný. Řešitel má proměnný typu integer, ale v zadání nevidím nikde ani
a) omezení čísel na čísla celý
b) omezení ve smyslu max. a min. hodnota
Pavel
A na tos přišel jakou úvahou? Pochopil bych ještě, pokud by šlo o čísla reálný. Ale proč zrovna racionální?
Pavel
Stroji mozes zadat aj obecne realne cislo, ak to tak naprogramoval programator. Kludne by som ti mohol naprogramovat program do ktoreho budes zadavat zlomky a program s nimi bude vediet pracovat.
Prave preto ma Pavel pravdu ze zadanie je uplne nahovno (ono ale skolske zadania su nahovno vzdy, ptz ucitel je zvycajne len pouceny pouzivatel).
BTW. Pavel myslel realne cislo vo forme IEEE-754, je to prakticky uplne dostacujuce a vie s tym pracovat priamo CPU.
Z kontextu mi připadlo, že Pavel nemyslel reálné číslo dle IEEE-754, pokud ano, omlouvám se.
Ad zadání : popravdě řečeno jsem si to integer ani nezaregistroval , ale v dotazu jde přece o tyto jednoduché záležitosti : jak vybrat největší číslo (či dvě) elementární metodou ( souhlasím s Tebou, že sortění je v tomto případě ... ) a jak algoritmus vsunout do procedury a jak ji volat.
Bohužel jsem Pascal už sto let neviděl a nemám jej na PC, takže se bojím sem psát kód nasucho.
Ad zlomky ( racionální čísla) : máš pravdu, však jsem nepsal, že ne.
Ad obecné reálné číslo : reálných čísel je nespočetně mnoho, kdežto algoritmů, které dovedou počítat reálné číslo s libovolnou přesností, je jen spočetně.
Odtud plyne, že takové e, pi nebo odmocnina ze dvou jsou celkem běžná iracionální čísla , mnohem více ( ve smyslu mohutnosti) je těch nepočitatelných.
Ale taky je pravda, že je jaro a děvčata odložila kabátky.
Nu, já myslel reálný číslo bez přívlastků. Ale je mi jasný, že při omezené velikosti reprezentace čísla (binárně) nelze dosáhnout nekonečné přesnosti reprezentace všech reálných čísel. Vždy jsme omezeni určitou přesností.
Ale trvám na tom, že prvotní je analýza dat; teprve až na jejím základě lze zapsat program. Jistě, obecně lze algoritmus vyjádřit i bez znalosti vstupních dat; ovšem praktická aplikace algoritmu v progr. jazyku s využitím proměnných prostě dle mých znalostí vyžaduje specifikaci vstuních dat. A na tom trvám.
Pavel
Jů, mám tu chybu "reální" místo "reálný". Fuj.
Pavel
Existuje nějakej rozumnej důvod proč tu deklarujete pole přes TYPE? Nebo mi snad něco uniklo?
Pokud se má to pole předávat jako parametr procedury, tak to z důvodu typové kompatibility jinak nejde.
BTW to zadání je nedostatečné, bez upřesnění co ta procedura má dělat to asi nepůjde - má se snad to maximum a druhé maximum z toho pole vyjmout? Jinak si totiž nedovedu představit jak je myšleno to "ze zbývajících čísel". Navíc - má se nějak řešit duplicita stejných hodnot? Co když maximální hodnota bude obsažena víckrát? A nejvíc mě tam mate ta "množina" čísel.
Aha, zajímavá myšlenka. Mějme tedy čísla: 0, 2, 5, 5, 5, 5. A teď hádanka: Jsou dvě největší z nich 5, 5 nebo 5, 2? Já myslím, že 5, 5.
Pavel
Samozřejmě že ano. Aby byl výsledek 2, 5, to by musel mezi těmi čísly být nějaký vztah (definovaný při zadání, ať už přímo nebo mezi řádky).
Samozrejme to neni. Moze byt spravne 5,5 a moze byt spravne aj 5,2. Co je spravne v praxi vyplyva z toho ze co sa vlastne programuje. Co je spravne v zadani vie len zadavatel, alebo jasnovidec, ale do zadania to nenapisal.
Děkuju všem za rady... =o)
Já jsem si to zadání bohužel nevymyslel a ani nejsem zkušený programátor, abych hodnotil kvalitu zadání... =o)
Vzhledem k tomu, že není v zadání, o jaký typ čísel by se mělo jednat, automaticky jsem použil INTEGER. A co se týká duplicity maximálních hodnot, to zatím neřeším...dozvěděl jsem se od vyučujícího, že vstupní hodnoty se mají nakonec načítat ze souboru, tudíž si do připraveného souboru dám čísla "na míru"... =o) Pokud se teda neobjeví lepší nápad...
Ještě jednou díky... =o)
můžu se zeptat na tento program, vyřešil jste ho nějak? Já mám stejné zadání programu a nevím si s ním rady
a co je na tom složitého? hledání 2,3 nebo klidně 4 nejmenších/největších čísel je tak pitomě jednoduché... prase mého stylu by to napsalo rekurzí a bylo by po fajrontě. Práskal je na tohle (narozdíl třeba od C, kde si člověk musí spoustu věcí ohlídat sám) jak dělaný...