Prohození obsahu dvou proměnných – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prohození obsahu dvou proměnných – Pascal – Fórum – Programujte.comProhození obsahu dvou proměnných – Pascal – Fórum – Programujte.com

 

Laaca0
Stálý člen
16. 3. 2008   #1
-
0
-

Prohození obsahu dvou proměnných umí úplně každý. Kdo to ale zvládne bez použití pracovní proměnné? :smile5:
(třetí procedura je obzvlášť půvabná)

Procedure Prohozeni1(var a,b:integer);

var t:integer;
begin
t:=a;
a:=b;
b:=t;
end;

Procedure Prohozeni2(var a,b:integer);
begin
a:=a+b;
b:=a-b;
a:=a-b;
end;

Procedure Prohozeni3(var a,b:integer);
begin
a:=a xor b;
b:=a xor b;
a:=a xor b;
end;


Nahlásit jako SPAM
IP: 81.0.253.–
DOS-u-akbar
Blujacker
~ Moderátor
0
Grafoman
16. 3. 2008   #2
-
0
-

Hmm, v pythonu to je elegantnější:



a=5
b=4
a,b=b,a

Nahlásit jako SPAM
IP: 213.220.226.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
survik1
~ Moderátor
0
Posthunter
17. 3. 2008   #3
-
0
-

To Blujacker : :smile6:

Nahlásit jako SPAM
IP: 89.102.163.–
Život je jen hra, která se nedá vyhrát.
Laaca0
Stálý člen
17. 3. 2008   #4
-
0
-

To Blujacker :
No jo, ale půvab není v tom, jak se to syntakticky zpracuje do programovacího jazyka, ale ten princip. Ty moje tři možnosti jsou použitelné i pro assembler. V Pythonu se to sice zapíše hezky elegantně jednoduše bez pomocné proměnné, ale vnitřně se to stejně provede pomocí ní.

Nahlásit jako SPAM
IP: 195.113.79.–
DOS-u-akbar
lamer
~ Anonymní uživatel
7 příspěvků
27. 4. 2008   #5
-
0
-

Procedure Prohozeni3(var a,b:integer);

a:=a xor b;
b:=a xor b;
a:=a xor b;
end;


No tak to je hustý...fakt to funguje. Ale docela mě zajímá: jak to pracuje? (tj. co teda vrací xor dvou integerů)

Dosud jsem si myslel, že logické funkce lze aplikovat jen na typ Boolean - dokud jsem neviděl tento kód:-D. A právě proto jsem udiven...

Nahlásit jako SPAM
IP: 84.42.174.–
Mircosoft+1
Věrný člen
27. 4. 2008   #6
-
0
-

Ta logická funkce se aplikuje bit po bitu. První s prvním, druhý s druhým atd.
Jde to i s andem, orem a notem. Ve spojení s bitovými posuny (shl, shr) je to skvělá věc (nastavení nebo vynulování jednotlivých bitů v čísle je jenom začátek).

Nahlásit jako SPAM
IP: 89.176.249.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
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, 5 hostů

Moderátoři diskuze

 

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