Exclusivement pour les géni

youisme Messages postés 1 Date d'inscription samedi 1 novembre 2008 Statut Membre Dernière intervention 1 novembre 2008 - 1 nov. 2008 à 21:22
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 - 10 nov. 2008 à 23:19
sltpl je veux ecrire un algorithme qui demende deux nombre et echenge leur contenu. "pascal"

7 réponses

Oniria Messages postés 292 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 18 décembre 2014 3
2 nov. 2008 à 10:12
google ...

Oniria
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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);

  // Première méthode
  WriteLn(sLineBreak + 'Invertion 1 :');
  temp:= var1;
  var1:= var2;
  var2:= temp;
  WriteLn(var1);
  WriteLn(var2);

  // Deuxième méthode
  WriteLn(sLineBreak + 'Invertion 2 :');
  var1:= var1 xor var2;
  var2:= var1 xor var2;
  var1:= var1 xor var2;
  WriteLn(var1);
  WriteLn(var2);

  WriteLn(sLineBreak + 'Appuyer sur une touche pour continuer');
  pause;
end.
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
2 nov. 2008 à 18:55
@ rt15 : te prends tu pour un génie?! lol

Ya de ces trucs quand même ces temps ci ... J'ai mis certaines question en marque-pages tellement elles sont terribles!
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
3 nov. 2008 à 22:43
Excellent rt15, plus fort que toi il n'y a que toi

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
3 nov. 2008 à 22:53
@rt15 : hou tu as les éloges de césar , la classe
0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
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 ?
0
Rejoignez-nous