la boucle s'arrêtera à la fin du tableau, quand ton indice arrive à nmax
Version imprimable
il te manque d'incrémenter i dans la boucle.
l'affichage sera fait une fois pour tous les éléments, c'est à dire pour chaque T[i].
oui ta raison j'ai oublié d'incrementer
mais l'affichage je sais pas ou est le probleme exactement;il demande d'editer les 3 tableaux et c'est fait dans mon algo
oui, il faut boucler pour afficher tous les éléments d'un tableau :roll:
tu affiche le premier, le second, le troisième, et ainsi de suite jusqu'au dernier.
oui oui oui j'ai pas fait attention c'est bon!!
merci!!
bonjour tout le monde!
bonjour acacia ,sidahmed;)
j'ai un tableau de nombre d'éléments n,je dois ecrire un algo pour supprimer les valeurs nules.
here is my essay:
alors qu'est ce que vous en pensez?(j'attend toujours vos comentaires et vos corrections pour discuter):DCode:
1
2
3
4
5
6
7
8
9
10 algorithme:suppression Debut variables:T tableau de t élements i:entier pour i allant de 1 à t faire lire(T[i]) si T[i]=0 alors T[i]=T[i+1] finsi finpour fin
Bonjour s-ehtp ;),
logiquement, c'est bon sauf si la dernière valeur est nulle, c'est pas la peine de décaler vers la gauche, une simple décrémentation du nombre d'éléments suffit.
Mais sache que l'opération du décalage est coûteuse en temps, il faut l'utiliser avec parcimonie ! Et par exemple si t'as les trois premières valeurs nulles, il vaudrait mieux décaler une fois pour toute et non pas trois décalages successifs ;)
Bon courage !
Cordialement,
Sidahmed.
Bonsoir;
et i := i+1; ? :roll:Code:
1
2
3
4
5
6
7
8
9 algorithme:suppression Debut variables:T tableau de t élements i:entier pour i allant de 1 à t faire lire(T[i]) si T[i]=0 alors T[i]=T[i+1] finsi finpour fin
A là non, la boucle pour sous entend cette incrémentation.Citation:
et i := i+1; ?
Le seul fait de préciser pour i de x à y indique que le i va varier tout seul. Dans les cas précédents, là où on ne connaissait pas forcément le nombre d'itérations à utiliser, on utilisait une boucle répéter ... tant que.
Si tu précises le domaine dans lequel va varier ta variable, ça ne sert à rien de surcharger les notations (en rajoutant une incrémentation) . Au contraire, cela ne peut qu'introduire d'éventuelles erreurs lors d'une possible implémentation.
En algorithmique et dans les vrais langages (</troll>), une boucle for est la donnée d'une valeure de début et d'une valeur de fin pour une variable (et éventuellement d'un pas si celui ci diffère de 1), et cette variable n'est pas modifiable dans le corps de la boucle. C'est à dire que l'on sait exactement et à l'avance combien de fois le corps de la boucle va s'exécuter. Sinon, on utilise une boucle tant que (while). L'incrément de la variable de boucle est donc implicite au passage de la fin de la boucle au début.
La citation de la syntaxe C pour prouver quelque chose en algorithmique n'est pas franchement une bonne solution :-)
C'est pas un peu ce que je viens de dire ? :koi:Citation:
C'est à dire que l'on sait exactement et à l'avance combien de fois le corps de la boucle va s'exécuter. Sinon, on utilise une boucle tant que (while).
Parceque l'instruction "for" du C ne sert pas uniquement a faire des boucles incrémentales sur une variable. C'est une instruction plus générale, un peu equivalent a un "while".
Code:
1
2
3
4
5
6
7
8
9
10 for( A ; B ; C) { ... } // est a peu près equivalent à A; while(B) { ... C; }
D'ailleurs, la boucle for n'est rien d'autre que du sucre syntaxique. ;)
La boucle for en C. Ce n'est pas le cas de tous les langages. Typiquement, en OCaml, le for n'est pas simulable par un while puisque la variable n'est pas une référence et qu'elle varie pourtant à chaque tours de boucle (c'est en revanche faisable avec une récursion évidement, mais je ne pense pas que ce soit compilé comme ça)
D'un point de vue compilation (et génération de code), la boucle for est traduite en boucle while.
Ce que propose les langages de programmation, c'est un choix. Pour ce qui est d'OCaml, le paradigme de programmation est beaucoup trop différent de ce qui se passe en machine pour être appliqué tel quel. Tu pourras bien entendu trouver des contres-exemples dans n'importe quel paradigme de programmation.
Ce que je disais faisait référence à l'histoire de la programmation impérative. On a crée la boucle for pour faciliter l'écritures des programmes, surtout pour les parcours de tableau. Pense à la boucle for d'un langage comme ada :
Cela facilite d'une part la lecture et la maintenance par rapport à une boucle while. Mais au moment de la compilation, il y aura une traduction vers une sorte de boucle while (un peu comme l'a présenté pseudocode)Code:
1
2
3 for i in T'range loop ... end loop
Ca ne sert à rien d'épiloguer là dessus, ceci dépasse largement les considérations du PO, évitons de polluer le thread qui est déjà très (trop) long.