cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 2 nov. 2008 à 12:21
Salut,
Je n'ai jamais fait de Pascal, mais bon le Delphi doit pas en être trop loin.
Pour échanger deux variables, on peut en utiliser une troisième, ou encore utiliser la fameuse méthode du xor (Dans le cas d'un entier).
Un exemple en Delphi :
<hr />
program Project1;{$APPTYPE CONSOLE}
uses
windows;
procedure pause();
var
hInput: THandle; // Handle de l'entrée standard
nRead: Cardinal; // Nombre d'octets lus
buffer: Char; // Réception du caractère
nOldMode: Cardinal; // Sauvegarde le mode précédent pour le restituer
begin
hInput:= GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hInput, nOldMode);
SetConsoleMode(hInput, 0);
ReadConsole(hInput, @buffer, 1, nRead, nil);
SetConsoleMode(hInput, nOldMode);
end;
var
var1, var2, temp: Integer;
begin
WriteLn('Var1 ?');
Read(var1);
WriteLn('Var2 ?');
Read(var2);
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 3 nov. 2008 à 09:22
Ouaich ! Quand j'ai vu le titre j'ai tout de suite pensé à moi.
Bon après répondre à la question, c'est une autre histoire... Les questions pour génis c'est pas donné à tout le monde.
J'ai mis un peu plus de 12 minutes pour retrouver la constante sLineBreak, à la place de mettre mes #13#10 habituels.
Après je voulais mettre une pause en fin d'exécution. J'ai tripatoullié un Read d'une variable de type Char pendant 2 minutes avant d'abandonné au profit d'une traduction du code C que j'utilise pour mes pauses.
Placé au début de mon code, la procédure pause est du meilleur effet pour faire peur à un débutant et ainsi assoire mon géni !
M'enfin au moins j'aurais fait connaître à ceux qui passe par là et qui connaissait pas la fameuse méthode du xor, qui a l'avantage d'être à peu près illisible.
Pour se la pêter en société c'est idéal : "Eh dis, tu sais comment qu'on échange deux variables sans en utiliser une troisième ?".
"Un vielle héritage de l'assembleur où on aimait bien ne pas trop consommer de registres."
Ca aussi c'est bon : faut parler du bon vieux temps style on était né. Surtout quand on fait de l'info depuis 5 ans...
Plus sérieusement, le fait est que c'est pathétique, mais que je suis spécialisé dans les questions de boulets level 15. Y a des jours où je me dis que je dois être un boulet level 14 pour ne savoir que faire ça.
Vous n’avez pas trouvé la réponse que vous recherchez ?
JulioDelphi
Messages postés2226Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention18 novembre 201014 10 nov. 2008 à 23:19
"echanger le contenu de 2 nombres", rien que ça, c'est un concept !
Sinon en faisant un effort j'ai bien une réponse :
"Attention mesdames zé messieurs, voici un 3 (le magicien montre sa main avec 3 doigts levés), et de l'autre coté, voici un 5 (même chose avec l'autre main). Roulement de tambours s'il vous plait !
Abracadabra ! POUF ! Le 3 est devenu est 5, et le 5 devenu un 3 !!"
C'est la seule façon d'échanger le contenu de 2 nombres, non ?