IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Exercice de débutant


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [Tableaux] Exercice de débutant
    Bonjour,

    Je commence à apprendre le php et je bute déjà sur l'un des premiers exercices :

    Ecrire une fonction qui prend en paramètre un chaine de caractères et qui retourne la meme chaine avec un caractere sur deux en majuscule.

    Alors j'essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $abc = "salut tout le monde";
    $abc = strtoupper($abc);
    echo ("$abc")
    tout est en majuscule bien entendu, mais je vois pas du tout comment le faire pour une majuscule sur deux..

    Pouvez vous m'aider ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    va jeter un oeil du coté de substr. l'idée, ça va être de faire une boucle sur chaque caractère de ta chaine, avec un compteur que tu incrémentes à chaque fois. Si ton compteur%2 est à 0, tu ne fait pas d'opérations sur la lettre, et tu la concatene dans une autre variable. si ça vaut 1, tu passe en majuscule et tu concatènes
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    substr, j'ai lu que cela servait à retourner un fragment de la chaîne de caractères à partir de la position spécifée.
    Ils n'en parlent malheureusement pas dans le bouquin...

    Si je comprends bien, il faut que je lui demande de m'extraire un fragment de la chaîne sur deux que je mettrais en majuscule ?

    Désolé, j'ai beaucoup beaucoup de mal à comprendre..

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    pas de soucis, on a tous commencé un jour

    tu as parfaitement compris l'idée.
    Va jeter un oeil aux docss suivantes :

    Doc de substr
    Doc de strlen

    strlen va te servir comme condition dans ta boucle, pour ne pas aller trop loin.
    à l'aide du compteur et de substr, tu va pouvoir récupérer un caractère après l'autre dans ta chaine
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je n'arrive pas a faire fonctionner le script ! Y'a t il une erreur (enfin wi, il y en a forcément une LIGNE 20)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    $f = false;
    $str = "Salut tout le monde";
    $i = 0;
    $exo = NULL;
     
    while ($i < stlen($str))
     
    {
    	if ($f = false)
    		{
    		$exo = $exo.$str[$j];
    		$f = true;
    		}
     
    		else 
    		{
    		($str[$j] = strtoupper($str[$j])
    		$exo = $exo.$str[$j];   //LIGNE 20
    		$f = false;
    		}
     
    	$j++
     
    }
     
    echo $exo
    tu peux m'aider a comprendre ou est l'erreur ?

    Merci !

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Une chaîne peut être traitée comme un tableau. Donc, au plus simple pour moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?php
    	$chaine = 'salut tout le monde';
     
    	$nb = strlen($chaine);
    	$i = 0;
    	 //-- $j permet de ne pas tenir compte des espaces ----------------
    	 //-- 0 commence la transformation au 2ème car., -1 au 1er --------
    	$j = -1;
    	while ($i < $nb)
    	{
    		if ($chaine[$i] != ' ')
    			$j ++;
    		if (! ($j % 2))
    			$chaine[$i] = strtoupper($chaine[$i]);
    		$i ++;
    	}
    	echo $chaine;
    ?>

  7. #7
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    comme jeca, je gererais ca comme un tableau... mais sans les modulos et tout ca, c'est compliqué ca ;o)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $chaine = 'salut tout le monde';
     
    $isUpcase = TRUE;
    for($i=0;$i<strlen($chaine);$i++) {
        if ($chaine[$i] !== ' ') {
            if ($isUpcase) {
                $chaine[$i]=strtoupper($chaine[$i]);
            }
            $isUpcase= ! $isUpcase; // un caractere sur 2 ;o)
        }
    }
    echo $chaine;
    ?>

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour votre aide !

    Comme je ne maitrise pas encore parfaitement le for, je ne suis pas sur de tout comprendre mais je vais méditer là dessus...

    A bientot pour le prochain exercice ^^;

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon, comme prévu, je bute sur le problème suivant..

    Ecrire une fonction qui retourne la chaîne passée en paramètre en ajoutant un espace tous les 3 caractères...

    Alors j'ai vu qu'il était possible d'utiliser la fonction preg_replace mais le chapitre n'en parle pas... Je suppose que je dois encore utiliser les tableaux, les boucles et peut etre les fonctions globales...

    L'idée que l'on m'a conseillée est de décaler les caractères un par un, mais je dois avouer que je ne vois pas mais alors pas du tout comment faire...
    J'ai repotassé le chapitre plusieurs fois mais je ne comprends pas..
    Eh wi, je débute vraiment...

    Pouvez vous m'éclairer ?

    Merci d'avance

  10. #10
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    rhalala, ca va pas t'aider a progresser ca... parce que cette methode existe deja toute faite ;o))

    http://fr2.php.net/fr/chunk_split

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je dois avouer que ce n'est pas les exercices les plus intéressants qu'il m'ait été donné de rencontrer...

    pour info la solution est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    $ch = "Salut tout le monde";
     
    function ajout_espace($ch)
    {
    	$i = 0;
    		$chresult = "";
    		while ($ch[$i])
    		{	
    			$chresult .= strtoupper($ch[$i]);
    			if (($i % 3) == 2)
    				$chresult .= " ";
     
    			$i++;
     
    		}
    return $chresult;
    }
     
    echo ajout_espace($ch);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exercices VBA (Débutant)
    Par bobinette33 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2010, 05h25
  2. Exercice pour débutant : afficher nombres de 0 à 9
    Par gadour14 dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 19/02/2009, 21h07
  3. Aide exercices Java débutant
    Par dalil777 dans le forum Général Java
    Réponses: 9
    Dernier message: 08/02/2008, 22h19
  4. Exercice de débutant: une fonction doit renvoyer 1 ou 0.
    Par Demonyak dans le forum Débuter
    Réponses: 8
    Dernier message: 02/12/2007, 16h11
  5. Exercices pour débutants : pointeurs
    Par neo214 dans le forum Débuter
    Réponses: 10
    Dernier message: 10/11/2007, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo