Plantage sur un prog (ca devrait pas!!) [C++] - C++ - Programmation
Marsh Posté le 21-04-2002 à 21:10:16
Il y a de fortes chances que ce soit un indice de tableau hors limites, je n'ai pas vérifié, mais ça ne m'étonnerait pas.
Vérifie si tes tableaux ne dépassent pas leur capacité à un moment donné.
Le mieux dans ce cas, est d'utiliser un debugger pas à pas.
Marsh Posté le 21-04-2002 à 21:19:10
pareil que harkonnen :
for(x=a;x<8;x++)
{
Echiquier[x][y++]=2;
}
et le reste. utiliser un modulo sur la valeur, ie (y++) % 8.
Harkonnen a écrit a écrit : Le mieux dans ce cas, est d'utiliser un debugger pas à pas. |
le mieux serait surtout d'utiliser un langage moins chiant pour un problème de ce genre ... mais pas de polémique
Marsh Posté le 21-04-2002 à 21:32:57
youdontcare a écrit a écrit : pareil que harkonnen : for(x=a;x<8;x++) { Echiquier[x][y++]=2; } et le reste. utiliser un modulo sur la valeur, ie (y++) % 8. le mieux serait surtout d'utiliser un langage moins chiant pour un problème de ce genre ... mais pas de polémique |
yéé surtout qu'on code rarement du 8 reines pour le plaisir, ca sent le TP a plein nez
Marsh Posté le 21-04-2002 à 21:51:21
chrisbk a écrit a écrit : yéé surtout qu'on code rarement du 8 reines pour le plaisir, ca sent le TP a plein nez |
Je code bien pour mon plaisir, pour info je suis en terminale, et j'ai trouver ce probleme sur le site suivant :
http://perso.wanadoo.fr/carlov/index.html
dans la rubrique tableau, je precise que ce site est tres bien pour qui ve s'initier au C++, du reste j'en ai pas trouver d'autres, si vous avez des addresses.
Marsh Posté le 21-04-2002 à 22:09:51
youdontcare a écrit a écrit : for(x=a;x<8;x++) { Echiquier[x][y++]=2; } |
Bien vu, j'avais une flemme telle que j'ai lu ce prog en biais
Et puis, le 8 reines
Marsh Posté le 22-04-2002 à 12:26:25
Ok merci tt le monde ca marche, mais ca met n temps fou(ds le genre 10 sec pour trouver une soluce) Mais bon ca marche.
Marsh Posté le 21-04-2002 à 20:48:16
Voila j'ai fait un prog en C++ pour resoudre la solution du probleme des 8 reines, vous savez celui il fo placer 8 reines sur un echiquier sans qu'une autre puisse manger l'autre. donc je fais mon petit prog de la maniere bourrin celle que je prefere ; et la je tombe sur une solution je suis content mais je le relance une seconde fois et il plante, je le relance une dizaine de fois et la il recommence a planter 1 fois sur 5, je le teste sur windows 95 et la il me trouve une solution a chaque fois mais windows me dit que le prog a causer une erreur et qu'il doit s'arreter. Je sais pas ce que c mon erreur qui provoque ces erreurs, pouvez vous m'aider.
La source :
#include <iostream.h>
#include <stdlib.h>
#include<time.h>
int Echiquier[8][8];
void Marquage(int,int);
void Affiche(void);
void Initialise(void);
int Placement();
int main()
{
srand((unsigned)time( NULL ));
int Reines;
Initialise();
while(Reines!=8)
{
Initialise();
Reines=Placement();
}
Affiche();
system("PAUSE" );
return 0;
}
void Marquage(int a,int b)
{
int x,y;
for(x=0;x<8;x++)
{
Echiquier[x][b]=2;
}
for(y=0;y<8;y++)
{
Echiquier[a][y]=2;
}
y=b;
for(x=a;x<8;x++)
{
Echiquier[x][y++]=2;
}
y=b;
for(x=a;x>=0;x--)
{
Echiquier[x][y--]=2;
}
x=a;
for(y=b;y<8;y++)
{
Echiquier[x--][y]=2;
}
x=a;
for(y=b;y>=0;y--)
{
Echiquier[x++][y]=2;
}
Echiquier[a][b]=1;
}
void Affiche()
{
int x;
int y;
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
cout<<Echiquier[x][y];
if(y==7)
cout<<endl;
}
}
}
void Initialise()
{
int x,y;
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
Echiquier[x][y]=0;
}
}
}
int Placement()
{
int y;
int x;
int Reines=0;
for(x=0;x<8;x++)
{
for(y=rand()%8;y<8;y++)
{
if(Echiquier[x][y]!=0)
continue;
else
{
Marquage(x,y);
Reines++;
cout<<"("<<x<<" ,"<<y<<" )"<<"Reines : "<<Reines<<endl;
break;
}
}
}
if(Reines<8)
{
for(x=0;x<8;x++)
{
for(y=0;y<8;y++)
{
if(Echiquier[x][y]!=0)
continue;
else
{
Marquage(x,y);
Reines++;
cout<<"("<<x<<" ,"<<y<<" )"<<"Reines : "<<Reines<<endl;
break;
}
}
}}
return Reines;
}