Bonjour cher devellopeurs

J ai travailler sur un programme qui doit me donner toutes les solution possible pour placer 8 reines sur un echiquier.
J ai deja une partie du programme, cependant il y a des erreurs que je n'arrive pas à trouver.
Comme je ne programme pas depuis longtemps, est-ce que quelqu'un pourrai m'aider. Merci d avance

Voici ce que j ai deja réaliser
[balise ajoute par mongaulois]
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <stdio.h>
#include <iostream.h>
 
int nbcase=8;
int point[8][8];                     //tableau representant l'echiquier
int x,y;                              //variables pour les boucles de l'affichage du tableau
int c[8];                             //tableau qui contient le numero de ligne des dames
int d ;                               // variable pour les entrees-sorties
int e[8];                            //tableau qui contient les valeurs de demarrage des boucles
dame(int,int,int);    //fonction pour placer ou retirer une dame
afftable();     //fonction qui affiche les resultats
placedame(int);
 
int main()
{
	for (x=0;x<nbcase;x++)		//initialise le tableau avec des 0
	{        
		e[x]=0;
		for (y=0;y<nbcase;y++)
		{
			point[x][y]=0;
		}
	}
	d=1;
	cout<<endl;
	if (d<0 || d>nbcase -1){
		d=0;
	}
	e[0]=d;
	placedame(0); //essaye de placer les dames
	afftable();
	cin>>x; //permet a l'utilisateur de voir la reponse
	return 0;
}
 
 
void placedame(int ligne)		//fonction pour essayer les positions possibles
{ 
	for (c[ligne]=e[ligne];c[ligne]<nbcase;c[ligne]++)
	{    
		if (point[c[ligne]][ligne]==0)
		{  
			e[ligne]=c[ligne]+1;  
 
			dame(ligne,c[ligne],2);                           
			if (ligne<nbcase -1)                              
			placedame(ligne+1);                               
 
			if (ligne==nbcase -1)
			{ 
				afftable();                                        
				dame(ligne,c[ligne],-2);                           
				dame(ligne-1,c[ligne-1],-2);                       
				placedame(ligne-1);   
				}
			break ;    
			}
	}
	if (ligne !=0)
	{
		if (c[ligne]>=nbcase)
		{  
			for (x=ligne;x<nbcase;x++)
				e[x]=0;
			dame(ligne-1,c[ligne-1],-2);                       //on efface la dame de la colonne juste avant
			placedame(ligne-1);                                //on essaye de placer la dame sur la colonne d'avant
		}
	}
}
 
 
 
void dame(int a,int b,int num)
{
	for (x=0;x<nbcase;x++)
	{
		if (x !=a)
			point[b][x]+=num;    //trace les lignes horizontales et verticales occupees
 
		if (x !=b)
			point[x][a]+=num;
	}
	for (x=1;x<nbcase;x++)			// trace les lignes diagonales occupees
	{       
		if (a+x<nbcase && b+x<nbcase)
			point[b+x][a+x]+=num;
 
		if (a-x>=0 && b-x>=0)
			point[b-x][a-x]+=num;
 
		if (a-x>=0 && b+x<nbcase)
			point[b+x][a-x]+=num;
		if (a+x<nbcase && b+x>=0)
			point[b-x][a+x]+=num;
	}
	if (num>0)
		point[b][a]+=1;      //place la dame
 
	if (num<0)
		point[b][a]-=1;      //retire la dame
}
 
 
 
void afftable()
{
	for (x=0;x<nbcase;x++)
	{
		for (y=0;y<nbcase;y++)
		{
			if (point[x][y] !=1)
				cout<<0<<" ";
 
			if (point[x][y]== 1)
				cout<<point[x][y]<<" ";
		}
		cout<<endl;
	}
	cout<<endl;
	cout<<"entier = une etape ,lettre=toutes les etapes"<<endl;
	cin>>x;
}