passage de c++ a php

passage de c++ a php - Divers - Programmation

Marsh Posté le 19-04-2005 à 19:48:03    

Salut  
Je doit faire un programme en php sur les tas. Je l'ai déjà en c++ mais j'ai quelque difficulté  à le passer en php.
Y aurait t il quelqu'un pour m'aider?
 
Ci-dessous le programme en c++ :

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include "tas.h"
  4. Bool inf(int i, int j)
  5. {
  6. return ((i<j) ? vrai : faux) ;
  7. }
  8. Bool Tas::comparaison(int i, int j)
  9. {
  10. if (eval==NULL)
  11. {
  12.   return compare(tableau[i],tableau[j]) ;}
  13. return compare(eval[tableau[i]],eval[tableau[j]]);
  14. }
  15. void Tas::echange(int i, int j)
  16. {
  17. if (i<taille_max && j<taille_max)
  18. {
  19.   int temp = tableau[i] ;
  20.   tableau[i]=tableau[j] ;
  21.   tableau[j] = temp ;
  22.   if (flag)
  23.   {
  24.    inverse[tableau[i]]=i ;
  25.    inverse[tableau[j]]=j ;
  26.   }
  27. }
  28. }
  29. void Tas::descend(int i)
  30. {
  31. int fils = 2*i + 1 ;
  32. fils = ((fils<taille-1 && comparaison(fils+1,fils) ? fils+1 : fils)) ;
  33. if (fils<taille && comparaison(fils,i))
  34. {
  35.   echange(i, fils) ;
  36.   descend(fils) ;
  37. }
  38. }
  39. void Tas::remonte(int i)
  40. {
  41. if (i>0 && comparaison(i,(i-1)/2))
  42. {
  43.   echange (i,(i-1)/2) ;
  44.   remonte ((i-1)/2) ;
  45. }
  46. }
  47. Tas::Tas(int n)
  48. {
  49. taille = taille_max = n ;
  50. tableau = new int [n] ;
  51. compare = (fptr) inf ;
  52. flag = faux ;
  53. inverse = NULL ;
  54. }
  55. Tas::Tas(int * ptr , int n, fptr comp, int * ptr2, Bool f)
  56. {
  57. taille = taille_max = n ;
  58. flag = f ;
  59. if (ptr!=NULL)
  60. {
  61.   tableau = ptr ;
  62.   eval = ptr2 ;
  63.   if(comp!=NULL)
  64.    compare = comp ;
  65.   else
  66.    compare = (fptr) inf ;
  67.   if (flag)
  68.   {
  69.    inverse = new int [taille] ;
  70.    for(int i=0 ; i<taille ; i++)
  71.    {
  72.     if (tableau[i]>taille-1)
  73.     {
  74.      fprintf(stderr,"Tas non inversible" ) ;
  75.      flag = faux ;
  76.      break ;
  77.     }
  78.     inverse[tableau[i]]=i ;
  79.    }
  80.   }
  81. }
  82. else {
  83.   taille = 0 ;
  84.   tableau = NULL ;
  85.   compare = NULL ;
  86.   eval = NULL ;
  87.   inverse = NULL ;
  88.   flag = faux ;
  89. }
  90. }
  91. Tas::~Tas()
  92. {
  93. if (flag)
  94.   delete [] inverse ;
  95. }
  96. int Tas::GetTaille()
  97. {
  98. return taille ;
  99. }
  100. void Tas::SetTaille (int offset)
  101. {
  102. taille+=offset ;
  103. }
  104. int Tas::ExtrMinimum()
  105. {
  106. if (taille==0)
  107. {
  108.   fprintf(stderr,"Tas Vide" ) ;
  109.   exit(1) ;
  110. }
  111. int mini = tableau[0] ;
  112. echange(0, taille-1) ;
  113. SetTaille(-1) ;
  114. descend(0) ;
  115. return mini ;
  116. }
  117. void Tas::Percolation(int i)
  118. {
  119. remonte(i) ;
  120. }
  121. int Tas::Inverse(int i)
  122. {
  123. if (flag)
  124.   return (inverse[i]) ;
  125. fprintf(stderr,"Tas non inversible !" ) ;
  126. return 0 ;
  127. }
  128. void Tas::Tri()
  129. {
  130. if (taille==0)
  131. {
  132.   fprintf(stderr,"Tas Vide" ) ;
  133.   exit(1) ;
  134. }
  135. for (int i=(taille/2 - 1); i>-1 ; i--)
  136.   descend(i) ;
  137. }

Reply

Marsh Posté le 19-04-2005 à 19:48:03   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed