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 ?
A voir également:
- Boucle while en c
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Pc qui s'allume et s'éteint en boucle - Forum Virus
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
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 ?
en faite je veux chercher le 1ligne qui contient u caractére diférent de l'espace qui est entre les 2 colonne c1 et c2 dés que je trouve ce carctére j'envoie le HMax c'est pour ca j'ai fais le while et break; mais ca ne focntionne pas
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;
}