RDV+DIAL chat illimit� dans ta r�g!
no save
Assistance
Achat
News

Forum | programmation
erreur segmentation C++
frank, le ven. 01 déc. 2006 à 06:47:52
Apres une deuxieme evaluation je vois que dans ton programme tu test si ligne == 1 ou ligne == 10 mais ligne est un char ....
ex...

if (!((ligne == 1) && (cardinal == 'N'))||((colonne == 1) && (cardinal == 'O'))||((ligne == 10) && (cardinal == 'S'))||((colonne ==10) && (cardinal == 'E')))
{
if (tab[(int)ligne - 65 - iligne][colonne - 1 - icolonne] != ' ')

{

cout<<"Le bateau ne peut pas etre mis ici"<<endl;

return false;

}
et de plus tu fais ligne -65 - iligne mais iligne peut etre -1 alors dans le cas ou ligne == A on a A-65-1 = -1 ce qui est a l'exterieur du tableau....

Voici quelque changment a faire pour faciliter la lecture de ton code

1: remplacé dans l'entete de la fonction
bool position_bateau (char ligne, int colonne, char cardinal, char type, char** tab) par
bool position_bateau (char ligneLettre , int colonne, char cardinal, char type, char** tab)
ensuite definir

int ligne =toupper( ligneLettre) - 'A' ;

je ne sais pas ce que la plus part des gens on a vouloir se casser la tete avec quelquechose comme '- 65'
cela rend un programme pas portable dans des environnements différent de ascii et personne ne se rapelle jamais la valeur numerique des code ascii, pourquoi faire compliqué quand on peut faire simple
(le toupper() est juste pour permettre a la fonction de prendre une majuscule ou une minuscule)

par la suite tu utilise partout ligne sans a chaque fois etre obligé de deduire 65...

Autre commentaire la chaine "Le bateau ne peut pas etre mis ici";
tu le declare au debut du programme comme un static const char *
cela vas rendre ton programme plus petit (la chaine ne sera pas répété si le compilateur n'a pas d'optimisation a ce niveau) et deplus si tu as a la changé tu as une seule place a modifié...

Autre point comme tu fait du C++ je te conseille de ne pas utilisé un tableau de char pour le jeux mais plutot une classe ...
Les avantage sont les suivantes:
Ta classe a le tableau mais connait aussi la grandeur du tableau elle peut donc controlé l'access a l'extérieur du tableau.
Tu pourrais avoir different grandeur de tableau sans changé ton programme...

Mais bon ce n'est que des idées

Frank
Précédentfrank
déc. 06
mamiemando
déc. 06
Suivant
REPONSES
frank
déc. 06
frank
déc. 06
mamiemando
déc. 06
juju
déc. 06
Version Web
Réalisé par RedShift
no save