DJIKSTRA EN MODE GRAPHIQUE

Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 - 9 déc. 2008 à 18:03
cs_djawahir Messages postés 2 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 17 février 2012 - 17 févr. 2012 à 20:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/48670-djikstra-en-mode-graphique

cs_djawahir Messages postés 2 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 17 février 2012
17 févr. 2012 à 20:58
bien sur celle qui concerne l'algorithme de djikstra
cs_djawahir Messages postés 2 Date d'inscription vendredi 17 février 2012 Statut Membre Dernière intervention 17 février 2012
17 févr. 2012 à 20:57
je veut demander à monsieur sami de me dire comment il a fait la form de ce projet , sltpl j'aimerais bien que vous me répondre le plus top possible.
offlake Messages postés 190 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 17 janvier 2009
16 déc. 2008 à 11:14
bon les pointeurs c pour un développeur avancé car sa pose trop de dégât pour un programmeur débutant c ta dire au niveau de l'allocation et de libération
donc mieux qu'on utilise l'allocation statique que l'allocation dynamique même que sa pose un problème de gaspillage mais bon Mieux que rien!!
BY OFFLAKE
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
15 déc. 2008 à 18:19
Ben je nie pas leurs efficacité (aux pointeurs) ...
C'est juste que ça me donne des boutons ces trucs là.
Parce que bon, récuperer une fuite mémoire à tataouine sur un pointeur, faut dire que c'est quand même extremement casse bonbond :D
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 déc. 2008 à 18:03
Boh ? Il y a même pas de "Pointer".

Pas forcément très inspiré mon exemple... En plus, le code plus long est plus lent pour copier de petites zones mémoire.

Autre exemple concret : les algos de tri. Un tri à bulle fait quelques dizaines de lignes... Un quicksort, plus rapide à l'exécution, est nettement plus long à codé... Encore plus si on le dérecursifie pour gagner encore plus.
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
15 déc. 2008 à 17:45
Pouark !!
Des pointeurs +_+
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
15 déc. 2008 à 14:51
Un exemple de code plus long mais plus rapide. Copy_Memory recopie les octets un par un de la source vers la destination. C'est le code le plus simple. Copy_MemoryEx recopie par paquets de 4 octets autant que possible, sachant que c'est la taille avec laquelle les processeurs actuels sont les plus à l'aise.

Par curiosité, on peut aller voir la fonction Move (Appelée par CopyMemory) proposée par Delphi. Elle utilise le même algo que Copy_MemoryEx (4 octets d'abord, puis octets par octets pour finir). Par contre, rédigée en assembleur, elle est plus dense et probablement nettement plus rapide.

type PTByteArray = ^TByteArray;
type TCardinalArray = array[0..High(Word) div SizeOf(Cardinal)] of Cardinal;
type PTCardinalArray = ^TCardinalArray;

implementation

{$R *.dfm}

procedure Copy_Memory(const lpDest: PTByteArray; const lpSrc: PTByteArray; const nSize: Cardinal);
var
nI: Integer;
begin
for nI:= 0 to nSize - 1 do
lpDest[nI]:= lpSrc[nI];
end;

procedure Copy_MemoryEx(const lpDest: PTByteArray; const lpSrc: PTByteArray; const nSize: Cardinal);
var
lpDestCard: PTCardinalArray;
lpSrcCard: PTCardinalArray;
nI: Integer;
nFirstCopyEnd: Integer;
begin
lpDestCard:= PTCardinalArray(lpDest);
lpSrcCard:= PTCardinalArray(lpSrc);

for nI:= 0 to nSize div 4 - 1 do
lpDestCard[nI]:= lpSrcCard[nI];

nFirstCopyEnd:= (nSize div 4) * 4;

for nI:= nFirstCopyEnd to nFirstCopyEnd + nSize mod 4 - 1 do
lpDest[nI]:= lpSrc[nI];
end;

procedure TForm1.Button1Click(Sender: TObject);
var
lpSrc: String;
lpDest: array [0..MAX_PATH] of char;
nSize: Integer;
begin
lpSrc:= '123';
Copy_MemoryEx(PTByteArray(@lpDest), PTByteArray(lpSrc), length(lpSrc) + 1);
ShowMessage(lpDest);
end;
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
13 déc. 2008 à 07:35
OK ! Je ne l'avais pas compris ainsi. Mais je ne suis pas non plus convaincu que l'optimalité d'un programme tienne dans le nombre de lignes de ses sources... De prime abord, je n'ai pas d'exemple à soumettre, mais je vais y réfléchir...
Bon week-end !
offlake Messages postés 190 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 17 janvier 2009
13 déc. 2008 à 07:25
Un code plus Optimale c'est un code qui réalise le maximum de chose avec le minimum de ligne source
Je c que le compilateur ne tien pas compte des commentaires Né au moin un code source plus optimale remplace les commentaires!!
BY OFFLAKE
cs_exar Messages postés 286 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 22 avril 2012 1
12 déc. 2008 à 18:24
Un code plus optimal parce qu'il n'y a pas de commentaires ??? Mais le compilateur n'en tient pas du tout compte...
offlake Messages postés 190 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 17 janvier 2009
10 déc. 2008 à 07:06
Pour John Dogget
Pour les commentaires je pense que tu sais qu'est ce qu'un Canvas...etc
DOnc le code est plus Optimal que possible et je pense qu'il est plus comprehensible que les autres Codes
Oui Ta raison!!
Pour les prochaine Source je tient en compte les commentaires
Merci John Dogget
BY OFFLAKE
offlake Messages postés 190 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 17 janvier 2009
10 déc. 2008 à 07:03
Pour NICOLAS____
Pour le nommage des composants Oui ta raison je nome pas tjrs et je sais que c'est une mauvaise habitude ok!!
Pour la prochaine Source j'essay d'être plus réaliste
BY OFFLAKE
John Dogget Messages postés 384 Date d'inscription vendredi 18 juin 2004 Statut Membre Dernière intervention 7 mai 2009
9 déc. 2008 à 21:48
Tu pourrais aussi commenter ton code parce que franchement c'est pas évident ...
Par contre, t'oublie pas de nous coller un à propos de 3m².

C'est comme d'hab avec tes sources en fait.
Nicolas___ Messages postés 992 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 24 avril 2013 1
9 déc. 2008 à 18:03
j'ai pas encore regardé vraiment le code Mais après 8 sources sur DelphiFr tu ne nome toujours pas tes composants et tu ne sais toujours pas faire un zip valide !

Ciao
Rejoignez-nous