Bonsoir , actuellement en classe de terminale S spé isn , j ai un travail à faire sur ce logiciel de programmation . Je souhaiterai un peu d'aide car j'ai vraiment du mal .
Je dois créer un programme donnant le nombre de lettre distinctes d'un mot .
Merci de d'éclaircir .
Montre ce que tu as déjà fait!
tu récupère la longueur du mot puis tu soustrais le nombre de fois ou ça rencontre un espace ou un tiret
Je sais afficher le nombre de caractères d'un mot ou phrase , mais la commande (length , il me semble) compte aussi les espaces les très d'union , ect . Du coup on m'a dit d'utiliser le tableau acsii pour pouvoir encadrer juste les caractère voulu : mais la commande ne marche pas :/ , voilà où j'en suis rendu :
void main() {
String x = "être";
char x = 2;
if (((int) charAt(i) >= 97) && ((int) charAt(i) <= 122));
println(charAt(2));
J'ai beaucoup de mal avec l'utilité de certaines commandes , et je crois qu'ici il y'a un sérieux problème , merci à vous !
up
Ok merci, c'était pour savoir ce que tu as de disponible dans Java's Cool
Solution possible : (1) Tu veux parcourir tous les caractères d'une phrase/mot, (2) vérifier si chaque caractère est une lettre a-z ou A-Z (pour question de simplicité on prend pas en compte les accents comme tu as dit non?) et (3) compter ce nombre de caractères
Initialisation
taille = 0
Debut
(1) pour i = 0 à taille du mot
(2) si caractère[i] du mot est compris entre 97 et 122 de la table ascii OU entre 65 et 90 (pour les majuscules)
(3) taille++
fin si
fin pour
Je te laisse traduire ça en Java (tu es sur la bonne voie). J'espère avoir compris ton problème, si jamais tu veux faire un affichage du caractère alors fait le au niveau du taille++
Cette algorithme n'affichera que les lettres "simples" sans accent ou autre, si tu veux être plus précis il te faudra ajouter d'autres cas dans le IF ou alors procéder autrement, comme à l'inverse enlever ce que tu ne veux pas si tu sais déjà ce que tu veux, utiliser un regex ou autres...
Bonne chance
Merci de m'avoir éclairci , je vois un peu mieux le déroulement du programme . Néanmoins , je ne susi pas sûr d'avoir tout compris ce que tu m'as expliquer , j'aurais dû mettre l'intituler de l'exercice :
"Niveau 1 :
Ecrire un programme en javascool qui compte le nombre de lettres distinctes d'un mot saisi par
l'utilisateur.
Les accents seront des lettres à part entière.
Ainsi le programme appliqué au mot « être » renverra 4 lettres distinctes.
Vous devrez impérativement utiliser au moins une fonction et un tableau.
On pourra, par exemple, parcourir toutes les lettres du mot et stocker les nouvelles dans un tableau
de caractères.
Niveau 2 :
même chose en ne tenant pas compte des accents.
Ainsi le mot « épithète » comptera 5 lettres distinctes au lieu de 7 dans le cas du niveau 1."
En faite , je pense , que j'aurais besoin de connaitre les différentes commandes(ex: types .. ) utiles à la résolution de l'éxo parce que je crois que c'est sur la mise en forme du programme que je pèche .
Sinon , c'est vraiment sympa de m'aider .
Ah d'accord, je n'avais donc rien compris.
Pour l'exercice 1 je ferais 2 boucles for, 1 qui parcourt le mot et l'autre qui parcourt ton tableau. Si le caractère i du mot n'est pas dans ton tableau alors tu l'ajoutes dans ton tableau et ainsi de suite. Au final tu comptes le nombre de caractère de ton tableau et c'est finit.
Pour le 2 je ne suis pas trop sûr d'avoir compris, on ne compte pas les accents tout court (du style brulé = 4 lettres) ou alors on ne compte pas les accents si y'a une lettre pareil sans l'accent (du genre être = 3 lettres car ê = e ?). Si c'est le premier cas alors l'algorithme posté plus haut fera l'affaire, en rajoutant un tableau à la place de la taille++.
Excuse moi, c'est juste moi qui a du mal a piger
Si jamais tu as des soucis pour la syntaxe, je reviendrai demain
J'ai un problème lorsque je met la condition , le programme m'affiche ça :
Erreur de syntaxe ligne 6 :
error: cannot find symbol
if (((int) charAt(i) >= 97) && ((int) charAt(i) <= 122));
^
Comme si ce n'était pas la bonne formule :/
Ta boucle if ne contient qu'une instruction (; à la fin de la ligne), sans rien à exécuter.
Je vois pas ce que je peux mettre de plus :\
IF est une condition, si la condition (ce qui est entre parenthèse) est vraie alors on passe dedans, sinon non.
en gros c'est :
if (la condition) {
//si condition vrai
}
Je te conseil d'aller regarder un cours Java car c'est vraiment la base de tout langage de programmation.
if (((int) charAt(i) >= 97) && ((int) charAt(i) <= 122))
{
// Alors ton caractere est une lettre minuscule
printf("La lettre est une minuscule");
}
printf marche pas, mais c'était pour donner un exemple avec ton propre code.
J'ai toujours le même résultat :/
charAt c'est une méthode de la classe String, tu dois donc l'appeler de la manière suivante:
taChaine.charAt(index)
Oh putainnnnn , tu est mon dieux !!!!! Merci , infiniment !
Maintenant , problème pour lire le nombre de caractère du tableau , j'ai essayé avec length() mais rien n'y fait vu que mon tableau , ici , n'a pas de nom à part x mais celui-ci retourne compter le nombre de caractère totale du String donc les espaces :/ . Je sais que je peux paraître pénible mais je débute vraiment avec java et désormais je commence à y voir de plus en plus clair grâce à vous , bien plus qu'en cours , merci !
Tu déclarer un int.
Tu fais une boucle de la taille du tableau (.length).
Et tu fais une condition pour comparer le caractère actuel à un espace, ou un retour à la ligne.
Si la condition est validée, tu n'incrémentes pas le int que tu as déclaré au début, sinon tu l'incrémente.
Je ne pense pas qu'il y ai besoin de refaire une boucle , je pense qu'il y'a plus simple , je vous montre où j'en suis ,peut-être sera-ce plus clair !
void main() {
String x = "être";
for (int i =0; i < x.length(); i ++) {
if ((int)97 <= (x.charAt(i)) && (int)(x.charAt(i)) <= 122) {
println(x.charAt(0));
}
}
}
Je vais essayé avec une boucle for , l'on verra !
Utilise les balises <code></code> s'il te plait (c'est plus lisible).
void main()
{
String x = "être";
Int nbCar = 0; // nombre de caracteres
for (int i =0; i < x.length(); i ++)
{
if ((int)97 <= (x.charAt(i)) && (int)(x.charAt(i)) <= 122)
{
println(x.charAt(0));
nbCar++;
}
}
println("Il y a " + Integer.toString(nbCar) + " nombre de caracteres);
}
Tu peux rajouter des conditions dans ta boucle if pour inclure les lettres majuscules etc...
Je suis pas sûr d'avoir exactement compris ce que tu voulais réaliser.