Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 05. 11. 2015 23:32

Týnuuus
Zelenáč
Příspěvky: 8
Škola: MFF UK
Pozice: student
Reputace:   
 

sudá a lichá, největší prvek v posloupnosti vyskytující se dvakrát

Ahoj, prosím vás o radu, jak mám naprogramovat v Pascalu tyto dvě úlohy.
1) Je zadán seznam přirozených čísel ukončený -1, které nepatří do seznamu. Vypište nejprve všechna sudá čísla a potom lichá, v tom pořadí v jakém byla v seznamu oddělená mezerou. Lichých čísel nebude víc než tisíc.


2) Je dána posloupnost N celých čísel, N<=1000. Určete největší číslo, které se v posloupnosti nachází alespoň dvakrát.
   Vstup: První řádek vstupu obsahuje počet prvků posloupnosti N (0 <= N <= 1000). Druhý řádek obsahuje N prvků posloupnosti oddělených mezerami.
   Výstup: Jeden řádek obsahující buďto hledané číslo (v případě, že řešení existuje) nebo řetězec "ne" v případě že řešení neexistuje (tj. posloupnost neobsahuje žádný prvek více než jednou)
Příklad 1:
vstup:
8
12 3 54 6 15 12 6 6
výstup:
12
Příklad 2:
vstup:
7
1 8 9 45 6 84 5
výstup:
ne

Offline

 

#2 06. 11. 2015 07:49

Formol
Místo: Praha
Příspěvky: 782
Pozice: krotitel mikroskopů (UHIEM 1. LF UK)
Reputace:   42 
 

Re: sudá a lichá, největší prvek v posloupnosti vyskytující se dvakrát

↑ Týnuuus:
Ahoj,
není to nic složitého, jen se toho nesmíš bát;-)

ad 1: První nápad by asi byl čísla třídit do dvou polí, ale to je zbytečné plýtvání pamětí, zejm. pokud máš omezen jen počet lichých čísel. Lepší je ze vstupu číst číslo po čísle a testovat je na sudost/lichost (zbytek po celočíselném dělení dvojkou). Sudá zrovna vypíšeš, lichá si uložíš do pole licha:Array[1..1000] of integer. Až bude na vstupu -1, načítání končí a druhým cyklem vypíšeš obsah pole licha.

ad 2: Tohle už je zajímavější, protože jde vymyslet několik postupů:
Přímočaré řešení: Při prvním průchodu najdi maximum vč. jeho indexu, po průchodu celým polem maximum vyřaď přepsáním hodnoty na -1. Pokud jsou ještě v poli nezáporné prvky pokračuj hledáním nového maxima. Pokud je totožné s maximem z předchozího kroku, má nalezen výsledek, jinak opakuj.

Jiné přímočaré řešení: Modifikuj Bubble Sort tak, aby při vložení nového prvku "nahoru" kontroloval, jestli nad ním není stejně velký prvek.

Lepší řešení: Posloupnost si načti do pole, pole si celé uspořádej a pak ho procházej od největšího prvku, zda v něm nejsou za sebou dva stejné prvky. První taková nalezená dvojice splňuje zadání. Pokud na to takhle po ránu koukám dobře, má toto řešení lepší asymptotickou složitost než přímočaré postupy.


Доктор сказал «в морг» — значит в морг!

Offline

 

#3 06. 11. 2015 22:18

Eratosthenes
Příspěvky: 3111
Reputace:   140 
 

Re: sudá a lichá, největší prvek v posloupnosti vyskytující se dvakrát

↑ Formol:

jenom drobnost - v Pascalu je přímo funkce odd, která vrací true nebo false...


Budoucnost patří aluminiu.

Offline

 

#4 07. 11. 2015 01:10 — Editoval Wrunx (07. 11. 2015 07:44)

Wrunx
Příspěvky: 65
Reputace:   
 

Re: sudá a lichá, největší prvek v posloupnosti vyskytující se dvakrát

No, já si myslím že najít největší duplicitní číslo se dá na jeden jediný průchod.
Ale možná se mýlím.
Princip:
procházím pole, a nalezené prvky si ukládám do zásobníku. Při každém novém prvku se dotážu, zda zásobník ten nový prvek obsahuje. Když ano, a bude větší jak dosavadní největší duplicita, zapamatuji si jí, jinak procházím dál.
Jo, ten program je jen kostra, a obsahuje určitou malou chybu ;-) ale ta se dá snadno napravit, aby čísla v zásobníku byla nezaměnitelná.

Offline

 

#5 07. 11. 2015 16:43

Týnuuus
Zelenáč
Příspěvky: 8
Škola: MFF UK
Pozice: student
Reputace:   
 

Re: sudá a lichá, největší prvek v posloupnosti vyskytující se dvakrát

Děkuji Vám za odpovědi, hnedka to půjdu zkusit a snad se mi to i podaří :-))

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson