CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[HELP] Convertir C++ en PHP

venez
venez
Niveau 9
07 avril 2013 à 00:25:02

Salut,
J'aurai besoin de convertir une fonction c++ en php !

Mon petit bout de code c++ ressemble donc à ça :malade:

typedef struct {
int n;
unsigned short int r;
} MKT;

static int comp_mt(const void *s, const void *d)
{
MKT *mt1 = (MKT *)s;
MKT *mt2 = (MKT *)d;

return (int)(short)(mt1->r - mt2->r);
}

Il sagit d'une fonction de "comparaison" utilisé dans
qsort(mt, n, sizeof(MKT), comp_mt);
situé plus tard plus tard dans le code ( heavydub.1allo.com/meko.c ).

Voila merci d'avance :-)

Paulop
Paulop
Niveau 12
07 avril 2013 à 01:41:11

Qu'est ce que tu n'arrives pas à faire exactement ?

venez
venez
Niveau 9
07 avril 2013 à 01:54:50

Je n'arrive pas à ré-écrire cette fonction (comp_mt) en PHP

function comp_mt($s, $d) {
ect...

Paulop
Paulop
Niveau 12
07 avril 2013 à 02:15:57

Oui mais j'imagine que tu sais écrire une soustraction, donc le problème c'est le fait de passer la fonction en tant que paramètre de qsort ?

Si c'est ça c'est très simple, on peut mettre une fonction dans une variable en php, donc tu as juste à passer le nom de ta fonction (dans les parenthèses) en paramètre.

Si tu arrives pas à créer un objet et le passer en paramètre d'une fonction, là je pense qu'il vaut mieux que tu relises un cours de php objet.

venez
venez
Niveau 9
07 avril 2013 à 02:20:42

Non c'est la syntaxe que je ne comprend pas, je suis pas familier des pointeurs et d'autre éléments syntaxiques du c++ et je voudrai traduire cette fonction en php car je ne comprend tout simplement pas son rôle sous cette écriture. :-(

Paulop
Paulop
Niveau 12
07 avril 2013 à 03:26:58

Ah, ben de mémoire car mon php est un peu rouillé.

http://pastebin.com/0H2hAM05

Les & permettent de passer par référence, il me semble que dans les versions de PHP >= 5 il n'y en a pas besoin si on utilise des objets, car les objets passent par défaut par référence à partir de la version 5. Tu peux les enlever pour voir.

venez
venez
Niveau 9
07 avril 2013 à 06:04:28

Merci, à quoi sert la classe MKT du coup ?
Sinon j'ai testé mais le résultat est incorrect (ça devrai donner la chaine 95374102681 mais ça renvoi 78910652341)

Le script en question:

include('mekorand.php');

class MKT {
public $n;
public $r;
}

function comp_mt( &$obj1 , &$obj2 ) {
return ($obj1->r - $obj2->r);
}

$n = 10;
for($i=0;$i<$n;$i++) {
$mt[$i]['r'] = $meko_key[$i];
$mt[$i]['n'] = $i+1;
}

usort($mt,"comp_mt");

for($i=0;$i<$n;$i++) {
echo $mt[$i]['n'].'<br>'; // 9 5 3 7 4 10 2 6 8 1
}

Paulop
Paulop
Niveau 12
07 avril 2013 à 18:13:28

pourquoi tu passes comp_mt entre guillemets ? théoriquement tu passes le nom de la fonctions directement et dans usort tu fais un $func($param,$param2);

Je ne sais pas à quoi sert MKT, faut lire la doc pour le savoir.

venez
venez
Niveau 9
07 avril 2013 à 18:28:19

Pour les guillemets, j'ai fait comme sur php.net
http://php.net/manual/fr/function.usort.php

Paulop
Paulop
Niveau 12
07 avril 2013 à 19:09:09

Oh, mais en fait tu as plein d'exemples sur cette page de comparateurs, je comprend pas ce que tu veux faire, et tu n'as pas l'air de comprendre non plus. Si tu ne sais pas dans quel ordre tu veux trier tu n'y arriveras jamais.

venez
venez
Niveau 9
07 avril 2013 à 20:58:27

Oui moi même je ne comprend pas ce ça fait, enfin si, ça trie un tableau en utilisant l'array $meko_key, un tableau de 9216 valeurs (qui est dans l'include mekorand.php).
C'est comme si le trie etait aléatoire, mais sans l’être vraiment.

Ya pas de doc qui explique comment ce script fonctionne, la seule source que j'ai trouvé c'est celle là ( http://pastebin.com/ytd4BGMK ) et elle est en c++

Donc je pensais que avec ça après l'avoir réécrit en php j'allais pouvoir avoir le même résultat mais visiblement c'est pas si simple que ça en a l'air :-(

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment