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 02. 12. 2013 19:21 — Editoval rexcor (02. 12. 2013 19:43)

rexcor
Zelenáč
Příspěvky: 2
Reputace:   
 

Vyřazování čísel až zbyde jedno (Jazyk Pascal)

Mějme kruh čísel - počet číslic je zadaný na vstupu- Čísla budeme vyškrtávat následovně ,že vynecháme první číslo až zbyde jedno. Svedl by někdo program ,která to zvládne pro jakékoliv číslo v longintu(pokud možno za použití rekurze) - jako na příklad:

Pokud přijde záporné číslo napiš ERROR.


Pro N = 5 je vyřazování takhle:

1 2 3 4 5 => 1 3 4 5 (vypadla 2)
1 3 4 5 => 1 3 5 (vypadla 4)
1 3 5 => 3 5 (vypadla 1)
3 5 => 3 (vypadla 5)
N = 3


Vstup:
  37
výstup:
  11


Vstup:
  -5
výstup:
  ERROR

Dovedl by to nekdo napsat? Opravdu by mi to pomohlo s programovanim nejsem moc velký kamarád.
Tato uloha uz je podle me obtiznejsiho razu. Děkuji

Offline

 

#2 02. 12. 2013 19:27

janca361
.
Příspěvky: 3284
 

Re: Vyřazování čísel až zbyde jedno (Jazyk Pascal)

↑ rexcor:
Celý program ti niko určitě nenapíše - napiš dílčí problémy - viz pravidla

Offline

 

#3 02. 12. 2013 21:09

janca361
.
Příspěvky: 3284
 

Re: Vyřazování čísel až zbyde jedno (Jazyk Pascal)

↑ rexcor:
Jak jsem v soukromé zprávě slíbila...

Ač to není úplně hlavní cíl programu, ošetřit jaké číslo je na vstupu určitě zvládneš. Načíst N také.

Osobně si myslím, že rekurze není třeba, protože stačí použít for-cyklus - znáš počet opakování a do toho "napasovat" aby to dělalo to, co má - zkoušej pro sudí i lichý počet čísel.

Offline

 

#4 03. 12. 2013 12:31 — Editoval Honzc (03. 12. 2013 14:05)

Honzc
Příspěvky: 4641
Reputace:   248 
 

Re: Vyřazování čísel až zbyde jedno (Jazyk Pascal)

↑ rexcor:
To nevím, jestli ti to bude do rozsahu (1...2147483647) fungovat, mně to píše, že je to více než 2GB.



Po editaci

Offline

 

#5 12. 12. 2013 10:58 — Editoval Honzc (12. 12. 2013 11:06)

Honzc
Příspěvky: 4641
Reputace:   248 
 

Re: Vyřazování čísel až zbyde jedno (Jazyk Pascal)

↑ rexcor:
Jestli je to ještě aktuální:
1. Vytvořit spojový seznam od 1 do požadovaného čísla, kde u každého prvku bude hodnota  pořadové číslo v seznamu
2. Pak napsat rekurentní funkci, která ze seznamu vyřadí každý druhý člen. (rekurence bude n div 2)
   Pokud n mod 2 bude 1 pak se ještě vyřadí 1 člen seznamu. Rekurence skončí, až bude mít seznam pouze jeden prvek a jeho hodnota bude i výsledkem celé funkce.

Jinak absolutně nejrychlejší bude následující program (je vytvořen z matematického výpočtu)

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson