Boucle while en c
Résolu
Sofi
-
predact Messages postés 187 Statut Membre -
predact Messages postés 187 Statut Membre -
Bonjour,
j'ai fais le boucle suivant qui me permet de retourner un entier
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
for(j=c1;j<c2;j++)
while(G[i][j]!=' ')
{ HMax=HAUTEUR-(i+1);
}
break;
return HMax;
}
mais normalement dés que j'ai G[i][j]!=' ' il me retourne hmax est s'arrete mais contrairement il se boucle mon petit programme il n'arrive pas de s'arreter
Est ce que vous connaissez pour quoi s'il vous palit repondez moi ?
J'ai posé plain de questions mai j'ai pas récue aucune réponses ?
j'ai fais le boucle suivant qui me permet de retourner un entier
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
for(j=c1;j<c2;j++)
while(G[i][j]!=' ')
{ HMax=HAUTEUR-(i+1);
}
break;
return HMax;
}
mais normalement dés que j'ai G[i][j]!=' ' il me retourne hmax est s'arrete mais contrairement il se boucle mon petit programme il n'arrive pas de s'arreter
Est ce que vous connaissez pour quoi s'il vous palit repondez moi ?
J'ai posé plain de questions mai j'ai pas récue aucune réponses ?
4 réponses
Bonjour,
Il doit y avoir une erreur au niveau de tes accolades déjà, essai de bien les mettre partout pour ne pas qu'il y ait d'ambiguité (je ne sais pas trop ou tu veux placer ton break):
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
while(G[i][j]!=' ')
{ HMax=HAUTEUR-(i+1);
}
}
break;
}
return HMax;
}
Et je ne vois pas trop l'utilité de ton while, parce qu'enfaite ça risque de bouler infinie vue que tu ne parcours pas ton tableau et donc si la case de coordonné (i,j) et différente de ' ' ça boucle mais ça restera comme ça vue que tu restes sur cette case. Peux-tu expliquer ce que tu voudrais faire ?
Il doit y avoir une erreur au niveau de tes accolades déjà, essai de bien les mettre partout pour ne pas qu'il y ait d'ambiguité (je ne sais pas trop ou tu veux placer ton break):
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
while(G[i][j]!=' ')
{ HMax=HAUTEUR-(i+1);
}
}
break;
}
return HMax;
}
Et je ne vois pas trop l'utilité de ton while, parce qu'enfaite ça risque de bouler infinie vue que tu ne parcours pas ton tableau et donc si la case de coordonné (i,j) et différente de ' ' ça boucle mais ça restera comme ça vue que tu restes sur cette case. Peux-tu expliquer ce que tu voudrais faire ?
Ok, si j'ai bien compris essaie peut-ètre :
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
if(G[i][j]!=' ')
{
HMax=HAUTEUR-(i+1);
return HMax;
}
}
}
}
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
if(G[i][j]!=' ')
{
HMax=HAUTEUR-(i+1);
return HMax;
}
}
}
}
Une fois de plus si j'ai bien compris, il manque un return -1 si aucune case n'est trouvé avant la fin du programme et je n'arrive à comprendre pourquoi vous faites: HMax=HAUTEUR-(i+1); Si seul la hauteur est demandé il vous suffirait de retourner i je pense.
Essayez peut-être ceci:
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
if(G[i][j]!=' ')
{
return i;
}
}
}
return -1;
}
Essayez peut-être ceci:
int HauteurMax(int c1,int c2,Grille G)
{
int i,j;
int HMax=0;
for(i=0;i<HAUTEUR;i++)
{
for(j=c1;j<c2;j++)
{
if(G[i][j]!=' ')
{
return i;
}
}
}
return -1;
}