Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2826 connectés 

 


Dernière réponse
Sujet : [C/C++] Très grands débutants - Caractère bizarre
Xavier_OM Je vous remercie tous beaucoup pour ces explications vraiment très claires. :):):)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Xavier_OM Je vous remercie tous beaucoup pour ces explications vraiment très claires. :):):)
Amadeus voila nnovic a tout dit ;)
Pour le i comme tu ne fait aucune initialisation (i a un certaine valeur a la sortie de la boucle precedente) donc pas besoin de mettre la premiere instruction du if :
la ligne "for (i;i>=0;i--)" est identique à "for (;i>=0;i--)"  
mais bon les programmeurs C ont souvent la manie de virer tt ce qui n'est pas indispensable ds un prog :)
nnovic C'est parce qu'avec un "break", l'execution de la boucle est interrompue immédiatement, alors que dans ton code l'execution se poursuivait jusqu'à la prochaine évaluation de la condition de sortie.
Etant donné que tu débutes, je me permets de m'étendre un peu sur la question :
 
La boucle for prend trois paramètres, dont aucun n'est obligatoire en théorie. Le premier rassemble la ou les conditions initiales,  qui peuvent être omises si elles ont été faites avant dans le programme. Le deuxième est la condition à respecter pour que l'éxecution de la boucle se poursuive. La troisième instruction est executée à la fin de chaque cycle.
 
Lorsque tu écris for(i=0;i<10;i++){instructions}, ces instructions sont executées dans l'ordre suivant :
i=0
i<10 ? si non, fin de la boucle
instructions
i++
i<10 ?
instructions
i++
...
 
Ainsi dans ta boucle, lorsque la condition "if (Tableau[i] == '!')fini=true;" est vérifiée, la variable i est incrémentée avant que la condition de sortie "i< 100 && !fini" soit traitée. Et ton programme prend donc en compte un caractère de trop.
 
Voilà, j'espère que j'ai été un peu clair !
Xavier_OM merciiiiii
 
pour le booléen ben j'avais pas tellement d'idées (et en prog quand on a ni les connaissances ni les idées...)
 
for (;i>=0;i--)  
 
le i est pas obligatoire dans la boucle for ?
et pourquoi ton prog prend pas le retour de chariot et le mien oui ?

 

[edit]--Message édité par Xavier_OM--[/edit]

Amadeus la caractere en question est le retour chariot qui est pris en compte ds le flux. voici un version de ton prog qui marche:
 
#include <iostream.h>
 
main ()
{
 char Tableau[100];
 int i;
 
 for (i=0; i< 100; i++)
 {
  cin >> Tableau[i];
  if (Tableau[i] == '!') {break;}
 }
 for (;i>=0;i--)
 {
 cout << Tableau[i];
 }
}
 
en plus ta pas vraiment besoin du booleen "fini"
Xavier_OM Bonjour.
J'ai voulu essayer les Arrays. Mon But : un programme où l'utilisateur tape une phrase et cela affiche la phrase à l'envers.
 
Mon prog :
 
#include <iostream.h>
 
main ()
{
char Tableau[100];
int i;
bool fini = false;
 
 
for (i=0; i< 100 && !fini; i++)
 {
 cin >> Tableau[i];
 if (Tableau[i] == '!')fini=true;
 }
for (i ;i>=0;i--)
 {
 cout << Tableau[i];
 }
}
 
 
Et ca me renvoie ca à l'execution :
 
C:\prog>inverse
Vive le Forum Programmation!
┤!noitammargorPmuroFeleviV
C:\prog>
 
Vous remarquerez un caractère bizarre : "┤" présent au début, et totalement aléatoire. En gros le prog me sort tjrs un caractère au pif la première fois, et je vois pas pourquoi.
 
Merci très beaucoup d'avance de m'éclairer.

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)