cs_NoMitsu
Messages postés122Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention15 février 2011 16 févr. 2011 à 18:25
Bonjour,
Je vois bien que tu es débutant, néanmoins le code est une horreur ! je te conseille fortement d'essayer de le recoder sans les goto et sans le k==92. De plus les 8 reines, est un excellent exercice de récursivité, tu devrais essayer de le faire de cette façon. Bon courage et si tu as besoin d'aide n'hésite pas a poser des questions.
fredericfabry
Messages postés5Date d'inscriptionmercredi 21 juillet 2010StatutMembreDernière intervention11 décembre 2011 9 oct. 2010 à 20:29
Bonjour
Je pense avoir mal compris le système de passage de paramètre d un tableau qu'il soit a une dimension ou plusieurs.
Effectivement le int*t[9] peut être remplacé par int*t.
Je comprend pourquoi les goto n ont plus la cote:
sur les langages moderne la notion de fonction ou d'encapsulation permet de penser autrement (fonction ou méthode) mais sur les automates industriels plus proche de l'assembleur, ca fonctionne encore.
Je vous remercie pour vos commentaires.
(demain j'essai le code de yannikator)(super idée mais irréalisable pour moi tout seul)
Yannikator
Messages postés23Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention10 novembre 2012 9 oct. 2010 à 09:43
Bon comme j'étais aussi intéressé par le résultat, j'ai pas résisté de mettre le résultat dans un fichier ^_^.
Pour ceux que ça intéresse :
void saveResult(int(*t)[9]){
for (j=1;j<=8;j++)
{
for (i=1;i<=8;i++)
{
if (t[i][j]<0)
{
fputc('*',file);
}
else
{
if (t[i][j]>0)
{
fputc('R',file); //Affiche le R de reine
}
else
{
fputc('-',file); //Affiche les possibilités de pose de reine
}
}
}
/*fprintf(file,"%s",CHARRIOT);*/
fputs(CHARRIOT,file);
}
fprintf(file,"%s%s","--------",CHARRIOT);
fprintf(file,"%s%d%s%s","---",tagg,"---",CHARRIOT);
fprintf(file,"%s%s%s","--------",CHARRIOT,CHARRIOT);
tagg++;
fclose(file);
}
Sans oublié les define:
#define FALSE 0;
#define CHARRIOT "\n" /*retour charriot...*/
A+
Yannikator
Messages postés23Date d'inscriptionmardi 23 octobre 2007StatutMembreDernière intervention10 novembre 2012 8 oct. 2010 à 19:35
Salut,
J'aime beaucoup l'algo, je trouve la méthode étonnante et très ancienne. Ce qui reflète bien la référence bibliographique auquel tu fais référence. Car les goto sont très dépréciés de nos jours, même si ils sont parfois indispensable.
Cependant je serais curieux de savoir si tu peux me dire qu'est-ce que tu fais quand tu déclare tes paramètres avec int (*t)[9], un simple int *t n'aurait pas été plus simple en tant que débutant...
Sinon l'algo je le trouve très intéressant... J'avais jamais pensé comme ça.
A+
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 8 oct. 2010 à 10:10
ça dépend, quand je travaillais en vb, j'utilisait des tableaux de base 1. En C j'utilise uniquement des tableaux de base 0.
Fondamentalement, ca ne change pas les données du problème.
Shromilder
Messages postés32Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention13 février 2010 8 oct. 2010 à 09:58
... Je crois que tu ne travailles pas avec les zéros. :)
cs_Warny
Messages postés473Date d'inscriptionmercredi 7 août 2002StatutMembreDernière intervention10 juin 2015 6 oct. 2010 à 09:50
Pour optimiser, tu peux représenter les positions des 8 reines pour un vecteur de 8 positions.
En effet, comme pour une colonne tu ne peux avoir qu'une seule reine, il est inutile de te trimbaler une représentation en mémoire à deux dimensions.
16 févr. 2011 à 18:25
Je vois bien que tu es débutant, néanmoins le code est une horreur ! je te conseille fortement d'essayer de le recoder sans les goto et sans le k==92. De plus les 8 reines, est un excellent exercice de récursivité, tu devrais essayer de le faire de cette façon. Bon courage et si tu as besoin d'aide n'hésite pas a poser des questions.
9 oct. 2010 à 20:29
Je pense avoir mal compris le système de passage de paramètre d un tableau qu'il soit a une dimension ou plusieurs.
Effectivement le int*t[9] peut être remplacé par int*t.
Je comprend pourquoi les goto n ont plus la cote:
sur les langages moderne la notion de fonction ou d'encapsulation permet de penser autrement (fonction ou méthode) mais sur les automates industriels plus proche de l'assembleur, ca fonctionne encore.
Je vous remercie pour vos commentaires.
(demain j'essai le code de yannikator)(super idée mais irréalisable pour moi tout seul)
9 oct. 2010 à 09:43
Pour ceux que ça intéresse :
void saveResult(int(*t)[9]){
FILE *file;
int i,j;
static int tagg = FALSE;
if(tagg == FALSE)
{if((file fopen("C:\\result.txt","w")) NULL)
{printf("Probleme creation fichier...");return;}
}
else
{if((file fopen("C:\\result.txt","a+")) NULL)
{printf("Probleme MAJ fichier...");return;}
}
for (j=1;j<=8;j++)
{
for (i=1;i<=8;i++)
{
if (t[i][j]<0)
{
fputc('*',file);
}
else
{
if (t[i][j]>0)
{
fputc('R',file); //Affiche le R de reine
}
else
{
fputc('-',file); //Affiche les possibilités de pose de reine
}
}
}
/*fprintf(file,"%s",CHARRIOT);*/
fputs(CHARRIOT,file);
}
fprintf(file,"%s%s","--------",CHARRIOT);
fprintf(file,"%s%d%s%s","---",tagg,"---",CHARRIOT);
fprintf(file,"%s%s%s","--------",CHARRIOT,CHARRIOT);
tagg++;
fclose(file);
}
Sans oublié les define:
#define FALSE 0;
#define CHARRIOT "\n" /*retour charriot...*/
A+
8 oct. 2010 à 19:35
J'aime beaucoup l'algo, je trouve la méthode étonnante et très ancienne. Ce qui reflète bien la référence bibliographique auquel tu fais référence. Car les goto sont très dépréciés de nos jours, même si ils sont parfois indispensable.
Cependant je serais curieux de savoir si tu peux me dire qu'est-ce que tu fais quand tu déclare tes paramètres avec int (*t)[9], un simple int *t n'aurait pas été plus simple en tant que débutant...
Sinon l'algo je le trouve très intéressant... J'avais jamais pensé comme ça.
A+
8 oct. 2010 à 10:10
Fondamentalement, ca ne change pas les données du problème.
8 oct. 2010 à 09:58
6 oct. 2010 à 09:50
En effet, comme pour une colonne tu ne peux avoir qu'une seule reine, il est inutile de te trimbaler une représentation en mémoire à deux dimensions.