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
Dobrý den,
mám za úkol vytvořit lineární jednosměrný dynamický seznam, jehož položkami budou čísla (kladná i záporná). Poté mám vytvořit proceduru, která seznam projde a zdvojí kladné hodnoty (např. 5, 7, -3, 4, -1 -> 5, 5, 7, 7, 4, 4). Jak je možné vkládat data v seznamu na různá místa? Prozatím jsem se setkal pouze s frontou, zásobníkem, nebo obousměrným seznamem, ale s tímto ne :( nevíte si někdo rady?
Offline
Zdravím,
Vytvoříme strukturu (prvek):
type PPrvek = ^Prvek; Prvek = record x: integer; dalsi: PPrvek; end;
Pokud známe ukazatel na prvek P, za který chceme vložit prvek N, můžeme udělat toto:
procedure NovyPrvekZa(P, N: PPrvek); begin N^.dalsi := P^.dalsi; P^.dalsi := N; end;
U každého prvku zjistíš, jestli je hodnota kladná (tedy větší jak nula). Pokud ano, tak jí zdvojnásobíme. Pak se posuneme na další prvek:
if (prvek^.hodnota > 0) then prvek^.hodnota := prvek^.hodnota * 2;
Tady jsem psal už něco.
Offline