Problème compréhension du programme le compte est bon
cs_echec
Messages postés3Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention22 avril 2009
-
22 avril 2009 à 09:57
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDernière intervention 8 janvier 2014
-
22 sept. 2010 à 14:09
Bonjour,
Je cherchai un programme c++ sur internet qui permettait de calculer la solution du jeu le compte est bon, j'en est finalement trouvé un, mais j'ai du mal à en comprendre le fonctionnement. Pouvez vous m'aidez svp?
ps: ce programme se compile bien et fonctionne
/* decomposer n en une operation de au plus a nombres du tableau t
*/
#include <stdio.h>
#include <string.h>
#include <conio.h>
int i;
typedef long (* fct)(long, long);
//Les 4 opérations fondamentales
long plus(long a, long b) { return a+b;}
long moins(long a, long b) { return a-b;}
long mult(long a, long b) { return (a==1 || b==1)?-10000:a*b;}
long div(long a, long b) { return (b!=0 && a%b==0)?a/b:-10000;}
//Fonction de decomposition
long decompose(long n, long a, long *t)
{
long v[6];
char tmp[80];
int i,j,k,l,op;
if (a<=0) return 0;
if (a==1)
{
if (n==t[0])
return 1;
else
return 0;
}
for (i=0;i0)?-1:1);
n+=d;
printf("%ld\n ",n);
}
printf("\n%ld",n);
printf("\n");
printf(res);
printf("--------------\n");
/*}*/
printf("\nFin de la recherche...");
getch();
return 0;
}
A voir également:
Problème compréhension du programme le compte est bon
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDernière intervention 8 janvier 20144 22 sept. 2010 à 14:09
Ce programme utilise la fonction récurrente decompose pour passer de la recherche du nombre n, avec a plaques (initiallement 6), figurant dans le tableau t, au problème plus simple (une plaque de moins) obtenu après application d'une opération à deux plaques i et j (deux boucles en i et j dans la fonction).
En reprenant le principe, mais : [list]en évitant les appels de fonctions pour effectuer de simples tests sur les valeurs t[i] et t[j] (surtout lorsque les opérations sont commutatives ou à sens unique)./list[list]en opérant le test de fin non pas sur toutes les plaques mais seulement sur le résultat des opérations,/list[list]en utilisant des variables globales n (invariant dans la récurence) et t (tableau global sur lequel on travaille à différents à niveaux définis par a),/list[list]et en incorporant le tout dans un objet,/list on peut élaborer un Compte est bon avec un simple script sur une page html.