Afficher un mot sur deux à l'envers
bonjour,
je dois faire un petit programme javascript, qui demande a l'utilisateur de rentrer une phrase, ensuite compte le nombre de mots de la phrase, l'affiche a l'écran.
A partir de la phrase rentrée, il crée une autre phrase, qui aura un mot sur deux (de la phrase rentrée), affiché a l'envers.par exemple si l'utilisateur rentre: je mange du fromage, il retourne: je egnam du egamorf. malheureusement impossible d'utiliser des fonctions, ni des tableaux, juste des boucles et le charAt(i).
pour la première partie du problème, je me suis assez bien débrouillé, mais c'est la seconde( affichage a l'envers d'un mot sur deux), qui ne m'affiche pas vraiment ce que j'esperes. alors voici le code que j'ai fait jusqu'à présent:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| var phrase = prompt("entrez une phrase");
var comptMot = 0;
for(var i = 0; i<=phrase.length; i++){
if(phrase.charAt(0)== " "|| phrase.charAt(0)== ","|| phrase.charAt(0)== "."|| phrase.charAt(0)== ":"|| phrase.charAt(0)== ";"|| phrase.charAt(0)== "?"|| phrase.charAt(0)== "!"|| phrase.charAt(0)=="-"){// si l'utilisateur commence sa phrase par un caractere separateur de mots
i++;
}
if(phrase.charAt(i)== " "|| phrase.charAt(i)== ","|| phrase.charAt(i)== "."|| phrase.charAt(i)== ":"|| phrase.charAt(i)== ";"|| phrase.charAt(i)== "?"|| phrase.charAt(i)== "!"|| phrase.charAt(i)== "-"){//si le caractere a la position i est l'un des caracteres separateur de mots
if(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-"){//si en plus le caractere a la position i+1 est l'un des caracteres separateurs
i++;
while(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-" ){//tant que le caractere a la position i+1 est l'un des caracteres separateurs, incrementer
i++;
}
}
comptMot++;
}
}
alert ("il y a "+ comptMot + " mots dans votre phrase");
var phraseEnvers = "";
var comptMot = 0;
for(var i =0; i<=phrase.length; i++){
if(phrase.charAt(0)== " "|| phrase.charAt(0)== ","|| phrase.charAt(0)== "."|| phrase.charAt(0)== ":"|| phrase.charAt(0)== ";"|| phrase.charAt(0)== "?"|| phrase.charAt(0)== "!"|| phrase.charAt(0)=="-"){// si l'utilisateur commence sa phrase par un caractere separateur de mots
i++;
}
if(phrase.charAt(i)== " "|| phrase.charAt(i)== ","|| phrase.charAt(i)== "."|| phrase.charAt(i)== ":"|| phrase.charAt(i)== ";"|| phrase.charAt(i)== "?"|| phrase.charAt(i)== "!"|| phrase.charAt(i)== "-"){//si le caractere a la position i est l'un des caracteres separateur de mots
comptMot++;
var t = i;
var j = comptMot-1;
if(comptMot%2 !=0){//si c'est impair
for(var m = j;m<=t;m++){
phraseEnvers += phrase.charAt(m);
}
i++;
}
if(comptMot%2 ==0){//si c'est pair
for(var k=t-1;k>=j;k--){
phraseEnvers += phrase.charAt(m)
}
i++
}
if(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-"){//si en plus le caractere a la position i+1 est l'un des caracteres separateurs
i++;
while(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-" ){//tant que le caractere a la position i+1 est l'un des caracteres separateurs, incrementer
i++;
}
}
}
}
alert(phraseEnvers); |
si quelqu'un voit le problème, faites-moi part s'il vous plait
merci.
afficher un mot sur deux a l'envers dans une phrase
bonjour,
je dois faire un petit programme javascript, qui demande a l'utilisateur de rentrer une phrase, ensuite compte le nombre de mots de la phrase, l'affiche a l'écran.
A partir de la phrase rentrée, il crée une autre phrase, qui aura un mot sur deux (de la phrase rentrée), affiché a l'envers.par exemple si l'utilisateur rentre: je mange du fromage, il retourne: je egnam du egamorf. malheureusement impossible d'utiliser des fonctions, ni des tableaux, juste des boucles et le charAt(i).
a noter que, les caracteres separateurs de mots, sont," " (espace),";" "?"..
pour la première partie du problème, je me suis assez bien débrouillé, mais c'est la seconde( affichage a l'envers d'un mot sur deux), qui ne m'affiche pas vraiment ce que j'esperes: quand je lexecute, par exemple, pour la phrase<je sui> il m'affiche <jeius>, il ne respecte pas l'espace, alors que c'est demandé.aussi, lorsque je rentre une phrase comme <je suis> il m'affiche<jesiu>, je pense a un probleme avec mes boucles, mais je vois vraiment pas depuis.alors voici le code que j'ai fait jusqu'à présent:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| var phrase = prompt("entrez une phrase");
var comptMot = 0;
var motActuel = "";
for(var i = 0; i<phrase.length; i++){
if(phrase.charAt(0)== " "|| phrase.charAt(0)== ","|| phrase.charAt(0)== "."|| phrase.charAt(0)== ":"|| phrase.charAt(0)== ";"|| phrase.charAt(0)== "?"|| phrase.charAt(0)== "!"|| phrase.charAt(0)=="-"){// si l'utilisateur commence sa phrase par un caractere separateur de mots
i++;
}
if(phrase.charAt(i)== " "|| phrase.charAt(i)== ","|| phrase.charAt(i)== "."|| phrase.charAt(i)== ":"|| phrase.charAt(i)== ";"|| phrase.charAt(i)== "?"|| phrase.charAt(i)== "!"|| phrase.charAt(i)== "-"){//si le caractere a la position i est l'un des caracteres separateur de mot
if(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-"){//si en plus le caractere a la position i+1 est l'un des caracteres separateurs
i++;
while(phrase.charAt(i+1)== " "|| phrase.charAt(i+1)== ","|| phrase.charAt(i+1)== "."|| phrase.charAt(i+1)== ":"|| phrase.charAt(i+1)== ";"|| phrase.charAt(i+1)== "?"|| phrase.charAt(i+1)== "!"|| phrase.charAt(i+1)== "-" ){//tant que le caractere a la position i+1 est l'un des caracteres separateurs, incrementer
i++;
}
}
comptMot++;
if(comptMot%2 !=0){
for(var k=motActuel.length-1;k<i;k++){
motActuel+=phrase.charAt(k);
}
}else{// if(comptMot%2==0)
for(var j= i-1;j>=motActuel.length-1;j--){
motActuel+= phrase.charAt(j);
}
}
}
}
alert ("il y a "+ comptMot + " mots dans votre phrase");
print(motActuel); |