CONVERTIR CODE JAVASCRIPT EN C

Fermé
jeandchanel Messages postés 140 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Quelqu'un peut il m'aider a réécrire ce code en langage C ?

// javascript
function combinaisons(a) { // a = new Array(1,2)
  var fn = function(n, src, got, all) {
    if (n == 0) {
      if (got.length > 0) {
        all[all.length] = got;
      }
      return;
    }
    for (var j = 0; j < src.length; j++) {
      fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);
    }
    return;
  }
  var all = [];
  for (var i=0; i < a.length; i++) {
    fn(i, a, [], all);
  }
  all.push(a);
  return all;
}


2 réponses

gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
 
Bonjour,

Commence par le typage dans les déclarations de fonction et variables ;)
0
Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

Si le but est de montrer que la conversion entre deux langages similaires est quasi-impossible, c'est l'exemple idéal.

Le C est fortement typé, Javascript ne l'est pas du tout.
Ce code utilise a outrance les listes et les listes de listes et le C un des pires langages pour cela.
Il y a une fonction définie dans une fonction, c'est un piège à contourner en C.
Et, selon moi le pire pour un portage, l'action effectuée par la fonction est incohérente, elle s'appelle combinaisons et elle est incapable de générer les combinaisons!

Autrement dit. Si c'est un exercice, il est anti-pédagogique. Si le but est d'écrire une fonction calculant des combinaisons en C, ça n'est certainement pas le bon point de départ.
0
KX Messages postés 19031 Statut Modérateur 3 020
 
Bonjour,

La raison est plus simple. Il a un exercice à faire, après une (très courte) recherche sur Google il a trouvé qu'un code en JavaScript (sur cette page), sauf que son exercice étant à faire en C il faut maintenant le traduire.

Comme ça de son exercice il n'aura rien fait...
0