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

  FORUM HardWare.fr
  Programmation

  [C/C++] Très grands débutants - Caractère bizarre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++] Très grands débutants - Caractère bizarre

n°35345
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-05-2001 à 19:04:55  profilanswer
 

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.


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le 29-05-2001 à 19:04:55  profilanswer
 

n°35349
Amadeus
Posté le 29-05-2001 à 19:16:47  profilanswer
 

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"

n°35354
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-05-2001 à 19:30:37  profilanswer
 

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]


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°35361
nnovic
Posté le 29-05-2001 à 19:48:56  profilanswer
 

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 !

n°35372
Amadeus
Posté le 29-05-2001 à 20:02:11  profilanswer
 

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 :)

n°35374
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 29-05-2001 à 20:08:45  profilanswer
 

Je vous remercie tous beaucoup pour ces explications vraiment très claires. :):):)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C/C++] Très grands débutants - Caractère bizarre

 

Sujets relatifs
petit pb en php sans dout très con[C++] Un problème bizarre ....
[C++] Très Urgent !!! Question de vie ou de ...[C++] Tres Grands Débutants - Recherche nombres premiers
Intégration d'une Police de caractere dans un site web[javascript] tres tres simple !
[HTML] pb tt con et très chiant avec les boutons radio et NS...tres simpple en visual basic
Plus de sujets relatifs à : [C/C++] Très grands débutants - Caractère bizarre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR