Problème avec Do...while et For
Littlep2901
Messages postés
2
Statut
Membre
-
giheller Messages postés 1960 Date d'inscription Statut Membre Dernière intervention -
giheller Messages postés 1960 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je rencontre deux problèmes bien particuliers avec les boucles For et Do...While.
j'essaie de lire les réponses données par un utilisateurs et de les évaluées pour donner une note finale.
Avec For, voici la syntaxe que j'utilise :
for ($ind=1; $rep[$ind]==$grep[$ind]; $ind++)
{
$points+=0.5;
}
$rep est la variable qui récupère la réponse donnée par l'utilisateur
$grep est la variable qui contient la bonne réponse
$ind c'est l'incrément pour la boucle
$points contient le nombre de points obtenu par l'utilisateur.
Le problème c'est que lorsque la boucle rencontre une mauvaise réponse, les questions suivantes ne sont pas évaluées.
J'ai donc pensé à utiliser une boucle Do...while.
Voici la syntaxe que j'ai utilisée :
$ind=1;
do
{
if ($rep[$ind]==$grep[$ind])
{
$points++;
}
$ind++;
} while ($ind=10);
Là c'est plus grave encore, l'expression n'est pas évaluées entièrement et je reçois le message suivant :
Fatal error: Maximum execution time of 30 seconds exceeded in d:\program files\easyphp1-8\www\rallyes\francais\reponse_son_sont.php on line 90
J'ai changé le temps d'exécution des scripts dans le fichier de configuration de php et je l'ai mis à 300 secondes (5 minutes). Au bout des 5mn, j'ai eu la même message.
Je précise que la ligne 90 c'est la suivante :
if ($rep[$ind]==$grep[$ind])
Mais l'erreur s'est produite aussi une fois sur la ligne 94 : $ind++;
Je ne sais vraiment pas comment résoudre ce problème. Merci de me venir en aide.
Je rencontre deux problèmes bien particuliers avec les boucles For et Do...While.
j'essaie de lire les réponses données par un utilisateurs et de les évaluées pour donner une note finale.
Avec For, voici la syntaxe que j'utilise :
for ($ind=1; $rep[$ind]==$grep[$ind]; $ind++)
{
$points+=0.5;
}
$rep est la variable qui récupère la réponse donnée par l'utilisateur
$grep est la variable qui contient la bonne réponse
$ind c'est l'incrément pour la boucle
$points contient le nombre de points obtenu par l'utilisateur.
Le problème c'est que lorsque la boucle rencontre une mauvaise réponse, les questions suivantes ne sont pas évaluées.
J'ai donc pensé à utiliser une boucle Do...while.
Voici la syntaxe que j'ai utilisée :
$ind=1;
do
{
if ($rep[$ind]==$grep[$ind])
{
$points++;
}
$ind++;
} while ($ind=10);
Là c'est plus grave encore, l'expression n'est pas évaluées entièrement et je reçois le message suivant :
Fatal error: Maximum execution time of 30 seconds exceeded in d:\program files\easyphp1-8\www\rallyes\francais\reponse_son_sont.php on line 90
J'ai changé le temps d'exécution des scripts dans le fichier de configuration de php et je l'ai mis à 300 secondes (5 minutes). Au bout des 5mn, j'ai eu la même message.
Je précise que la ligne 90 c'est la suivante :
if ($rep[$ind]==$grep[$ind])
Mais l'erreur s'est produite aussi une fois sur la ligne 94 : $ind++;
Je ne sais vraiment pas comment résoudre ce problème. Merci de me venir en aide.
A voir également:
- Problème avec Do...while et For
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Instagram for pc - Télécharger - Divers Communication
- Do not turn off target traduction - Forum Téléphones & tablettes Android
- Microsoft store download for pc - Guide
3 réponses
bonsoir,
la boucle me semble-t-il dot être limitée par deux critères.
ensuite
for ($ind=1; $rep[$ind]==$grep[$ind]; $ind++)
{
$points+=0.5;
}
$ind c'est l'incrément pour la boucle
pas d'accord : si $ind est l'incrément on ne fait pas $ind++ qui veut dire faire + 1 à ind.
de ce fait la boucle ne s'arrête pas sauf par un time out dépassement du temps !
donc que ce soit un do un while ou autre chose revoyez le pas de la boucle et la (les) condition(s) d'arrêt.
la boucle me semble-t-il dot être limitée par deux critères.
ensuite
for ($ind=1; $rep[$ind]==$grep[$ind]; $ind++)
{
$points+=0.5;
}
$ind c'est l'incrément pour la boucle
pas d'accord : si $ind est l'incrément on ne fait pas $ind++ qui veut dire faire + 1 à ind.
de ce fait la boucle ne s'arrête pas sauf par un time out dépassement du temps !
donc que ce soit un do un while ou autre chose revoyez le pas de la boucle et la (les) condition(s) d'arrêt.
Merci Giheller pour cette réponse,
mais, si je ne mets pas le $ind++, comment la boucle s'incrémente-t-elle ? Comment faire comprendre à php qu'il doit évaluer la réponse suivante ?
Autre chose, n'y a-t-il pas une méthode pour donner une limite supérieure à la boucle for ? Par exple en Visual Basic on écrirait :
For ind = 1 to 10
(instructions)
Next
Ce qui veut dire que l'instruction est exécutée 10 fois.
Merci encore de m'aider.
mais, si je ne mets pas le $ind++, comment la boucle s'incrémente-t-elle ? Comment faire comprendre à php qu'il doit évaluer la réponse suivante ?
Autre chose, n'y a-t-il pas une méthode pour donner une limite supérieure à la boucle for ? Par exple en Visual Basic on écrirait :
For ind = 1 to 10
(instructions)
Next
Ce qui veut dire que l'instruction est exécutée 10 fois.
Merci encore de m'aider.