Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Comptage de caractères


Invité Invité

Messages recommandés

ok niquel ! merci ! je pense que j'avais pas validé mon compte depuis mon adresse mail .. vraiment désolée :P

 

J'ai bien lu le tutorial a propos de php mais je n'arrive toujours pas à trouver ce qui ne va pas, si vous voulez bien m'aider.. merci !!

EN HTML :

<form method="post" action="nb_voyelle.php">

Entrer une phrase <br/>

<input type="text" name="phrase"/><br/>

<input type="submit"/><input type="reset"/>

</form>

 

EN PHP :

<?php

$phrase=$_POST['phrase'];

$nbvoyelle=strlen($phrase);

$voyelle==(a|e|i|o|u|y|A|E|I|O|U|Y)

$nbApparition = 0;

for($i=0;$i<$nbvoyelle;$i++);

{

if($phrase[$i]==$voyelle)

$nbApparition++;

}

echo 'les voyelles '.$voyelle.' apparaissent '.$nbApparition.' fois dans la phrase "'.$phrase.'".';

 

 

Easy php me dit :

 

Notice: Undefined variable: voyelle in C:\Program Files\EasyPHP 2.0b1\www\nb_voyelle.php on line 5

 

Notice: Undefined variable: voyelle in C:\Program Files\EasyPHP 2.0b1\www\nb_voyelle.php on line 10

 

Notice: Uninitialized string offset: 11 in C:\Program Files\EasyPHP 2.0b1\www\nb_voyelle.php on line 10

 

Notice: Undefined variable: voyelle in C:\Program Files\EasyPHP 2.0b1\www\nb_voyelle.php on line 14

les voyelles apparaissent 1 fois dans la phrase "je suis là.".

Modifié par morei1
Lien vers le commentaire
Partager sur d’autres sites

.. et j'avais pas fait attention la première fois, mais tu sembles avoir un souci avec les points-virgules en fin de ligne.

 

 

"==" est censé je crois dire "égal" alors que "=" fait autre chose. J'ai enlevé mes doubles "=" et j'ai mis tous les points virgules partout, je vous montre ce que ça donne.

 

<?php

$phrase=$_POST['phrase'];

$nbvoyelle=strlen($phrase);

$voyelle=('à'|'a'|'e'|'i'|'o'|'u'|'y'|'A'|'E'|'I'|'O'|'U'|'Y');

$nbApparition = 0;

for($i=0;$i<$nbvoyelle;$i++);

{

if($phrase[$i]=$voyelle);

$nbApparition++;

}

echo 'les voyelles '.$voyelle.' apparaissent '.$nbApparition.' fois dans la phrase "'.$phrase.'".';

?>

 

mais j'ai encore un problème pour le comptage avec easy php : dans la phrase "bonjour toi"

 

les voyelles ÿ apparaissent 1 fois dans la phrase "bonjour toiÿ".

le "ÿ" ne devrait pas être là ..

 

merci beaucoup!

Lien vers le commentaire
Partager sur d’autres sites

Ouh là... Arrête-toi cinq minutes, va faire un tour dehors ou va prendre une boisson chaude, peu importe, mais surtout lève le nez de ton code.

Quand on commence à faire des trucs du genre "je remplace tous les opérateurs par "=" et je mets des points-virgules partout" c'est qu'on a passé trop de temps le nez collé au code et qu'on n'a plus envie de réfléchir => mauvais plan.

 

Pour rappel :

- l'opérateur "==" sert à tester une égalité entre deux variables / valeurs

- l'opérateur "=" sert à valoriser une variable avec une valeur

- les points-virgules servent à indiquer la fin d'une instruction

 

Par conséquent :

- la ligne qui ne contient que "<variable> == <valeur>" est dénuée de sens, puisqu'elle revient à mettre une ligne "true;" ou "false;" dans le code

- un "test" effectué avec une affectation (opérateur "=") ne teste pas ce qu'on croit tester

- les points-virgules à la fin de lignes "for (...);" ou "if (...);" font en sorte que rien n'est exécuté pendant la boucle ou dans le cas où la condition évaluée par if est vraie

Lien vers le commentaire
Partager sur d’autres sites

- un "test" effectué avec une affectation (opérateur "=") ne teste pas ce qu'on croit tester

 

donc quand j'écris "$voyelle = ('à'|'a'|'e'|'i'|'o'|'u'|'y'|'A'|'E'|'I'|'O'|'U'|'Y'); " je ne dis pas que les voyelles sont les lettres à,a,e,i,o,u,y... ??

 

 

 

<?php

$phrase = $_POST['phrase'];

 

$nbvoyelle = strlen($phrase);

$voyelle = ('à'|'a'|'e'|'i'|'o'|'u'|'y'|'A'|'E'|'I'|'O'|'U'|'Y');

$nbApparition = 0;

 

for($i=0; $i<$nbvoyelle; $i++)

{

if($phrase[$i] == $voyelle)

$nbApparition++;

 

}

echo 'les voyelles '.$voyelle.' apparaissent '.$nbApparition.' fois dans la phrase "'.$phrase.'".';

 

 

?>

 

 

 

easy php : les voyelles ÿ apparaissent 0 fois dans la phrase "bonjour toi ".

 

:P

Lien vers le commentaire
Partager sur d’autres sites

<?php
$phrase = "ceci est un test";

$voyelle = array('à','a','e','i','o','u','y','A','E','I','O','U','Y');



foreach (count_chars($phrase, 1) as $i => $val) {
if ( in_array(chr($i),$voyelle) ) {
	   echo "Il y a $val occurence(s) de \"" , chr($i) , "\" dans la phrase.\n";
}
}
?>

 

donne

 

Il y a 3 occurence(s) de "e" dans la phrase.
Il y a 1 occurence(s) de "i" dans la phrase.
Il y a 1 occurence(s) de "u" dans la phrase.

 

on définit correctement le tableau de voyelles

on établit les statistiques de fréquence de la chaine de caractère avec count_chars

Pour chaque entrée du tableau retourné, on teste si le caractère fait partie du tableau de voyelles;

si oui, on affiche les statistiques du caractère en question

Lien vers le commentaire
Partager sur d’autres sites

- un "test" effectué avec une affectation (opérateur "=") ne teste pas ce qu'on croit tester

donc quand j'écris "$voyelle = ('à'|'a'|'e'|'i'|'o'|'u'|'y'|'A'|'E'|'I'|'O'|'U'|'Y'); " je ne dis pas que les voyelles sont les lettres à,a,e,i,o,u,y... ??

Si. J'ai très précisément parlé de test or ce que tu évoques là c'est l'initialisation de $voyelle (qui était mal faite et qui a bénéficié d'une correction à l'occasion des dernières transformations)

Ce qui m'inquiétait le plus, c'est que tu avais également changé ceci :

  if($phrase[$i]==$voyelle)
$nbApparition++;

... qui est parfaitement fonctionnel, en ceci :

  if($phrase[$i]=$voyelle);
$nbApparition++;

... qui fait des choses qui n'ont vraiment plus rien à voir avec ce que tu souhaitais (et qui expliquent l'apparition d'un ÿ en fin de chaîne)

Lien vers le commentaire
Partager sur d’autres sites

Oui. Rien d'étonnant là-dedans puisque c'est cohérent avec le code que tu as écrit.

Maintenant il me semble qu'il serait temps de chercher à comprendre ce que fait le code sans taper à l'aveuglette sur tel ou tel élément, non ?

Rétablis "=" dans les affectations et "==" dans les tests, et déclare proprement ton tableau de caractères ;-)

Lien vers le commentaire
Partager sur d’autres sites

$voyelle = ('à'|'a'|'e'|'i'|'o'|'u'|'y'|'A'|'E'|'I'|'O'|'U'|'Y');
foreach ( count_chars($voyelle,1) as $i => $val) {
echo "Le caractere ".chr($i)." apparait ".$val." fois\n";
}

 

dit

 

Le caractere   apparait 1 fois
Le caractere ÿ apparait 1 fois

 

l'initialisation de ta référence pour les voyelles est incorrecte. Il faut initialiser un tableau

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...