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

C++ Discussion :

Comptage et décomposition


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 34
    Par défaut Comptage et décomposition
    Bonsoir à tous et merci déjà de venir m'aider.

    J'ai 2 exercices à faire et j'ai quelques idées mais j'ai besoin de vous pour m'aider à bien m'orienter.

    Le premier exercice est que dans une chaîne de caractères entré par l'utilisateur, je souhaite compter le nombres de lettres et de chiffres mais je n'arrive qu'à compter le nombres de caracteres dans la chaine mais je ne vois pas comment on peut séparer les chiffres et les lettres (à part avec la table ASCII mais ça risque de me faire un programme de fou).

    Pour vous donner un exemple, je dois faire ceci : dans la chaîne, il y a "Je vais avoir 17 ans", je dois dire qu'il y a 19 lettres et 2 chiffres.

    Le 2e exercice consiste à récupérer la chaîne de caractères et de découper la phrase afin d'avoir une liste avec les mots. Il faut savoir que la chaîne de caractères est dans un tableau appellé tableauCar et dans ma consigne, je prend chaque mot et le copier dans le tableau qui s'appelle tableauMot.

    Un exemple : dans tableauCar, il y a "Je suis un programmeur" et dans tableauMot, je dois avoir tableauMot[0]=Je / tableauMot[1]=suis / tableauMot[2]=un / tableauMot[3]=programmeur

    Pour celui ci, j'avais pensé à un pointeur avec un if qui permet de dire que si le pointeur détècte un espace, je récupère le mot d'avant et je le copie dans tableauMot[compteur] et compteur je l'incrémente de 1 à chaque espace.

    Voila, j'espère que vous pourrez m'aider à trouver la solution

    Bonne soirée / Bonne journée

  2. #2
    Membre averti
    Homme Profil pro
    Chomage
    Inscrit en
    Juillet 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chomage

    Informations forums :
    Inscription : Juillet 2016
    Messages : 24
    Par défaut
    Bonjour !
    Pour le premier exercice, je te conseille d'aller chercher vers les std::isUpper et ses variantes std::isNumber etc (c'est un peu C comme solution , mais on prend la std::string on utilise la méthode c_str() et pouf c'est compatible)
    on fait une boucle for avec la taille de la chaine (méthode std::basic_string::lenght) et on parcourt la chaine, avec une variable qui stocke le nombre de lettres , une le nombre de chiffres etc... Tu veux peut etre utiliser l'operateur [] pour récupérer une référence vers tel charactère.

    Pour le second , va chercher vers la fonction substr. Avec la méthode de l'exo précédent adaptée, ca le fait.
    voici quelques pages de doc : (pour les IsXXX n'ait pas peur qu'il demandent un int , c'est pour l'eof en fait , passe le char et ca marche)
    http://en.cppreference.com/w/cpp/string/basic_string
    http://en.cppreference.com/w/cpp/string/byte/isupper

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 34
    Par défaut
    Merci de ta réponse Remilia.

    Mais j'avais oublié de préciser que j'avais le droit d'utiliser que strstr / strcat / strlen ... mais celles que tu as cité, je ne peux pas les utiliser.
    J'ai quand même écrit ça mais on me met une erreur de compilation : forbids comparison between pointer and integer mais je ne vois pas ou est l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            char*ptc; 
            int lettre=0, chiffre=0; 
            if (ptc<=65 && ptc>=90) 
            { 
                lettre++; 
            } 
            else if (ptc<=48 && ptc>=57) 
            { 
                chiffre++; 
            }
    si le caractere est compris entre 65 et 90 je fais lettre=lettre+1
    si le caractere est compris entre 48 et 57, je fais chiffre=chiffre+1
    donc a la fin j'affiche lettre et chiffre pour avoir mes 2 valeurs

    Pouvez-vous me dire pourquoi je reçoit ce message ?

    Bonne soirée

  4. #4
    Membre averti
    Homme Profil pro
    Chomage
    Inscrit en
    Juillet 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chomage

    Informations forums :
    Inscription : Juillet 2016
    Messages : 24
    Par défaut
    ptc est est un pointeur donc si tu veux l'utiliser, il faut le déréférencer. Le compilo' te dit que tu compares une addresse mémoire et un chiffre , ce qui n'a pas de sens ^^ , donc par exemple

    , le déréférencement du pointeur donnant le chiffre du charactère deriere l'addresse. Strlen etc ... ca ressemble plus a du C qu'a du C++ ... t'es sur que t'es sur le bon forum ? (pars pas hein , juste que c'est plus C que C++ ta question)

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Décembre 2016
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 34
    Par défaut
    La base doit être en C++ (j'utilise des cin cout system() ...) mais pour certaines parties on a le droit d'utiliser ces trucs qui font partie du langage C

    Oui mais le problème c'est que dans un autre exercice, j'ai mis la même chose à une ligne prêt qui est ptc = tableau, mot) qui est une variable

    Le ptc doit me servir pour que je puisse pointer sur la 1er lettre de la chaine de caractere qui est dans mon tableau, donc je ne comprend pas ce que je dois changer.

  6. #6
    Membre averti
    Homme Profil pro
    Chomage
    Inscrit en
    Juillet 2016
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chomage

    Informations forums :
    Inscription : Juillet 2016
    Messages : 24
    Par défaut
    Tu dois changer les If . ptc est un pointeur , et nous voulons la valeur pointée par elle. Il faut donc , pour avoir sa valeur, utiliser l'astérisque avant. et la ligne d'assignement doit ressembler a sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *ptc = &tableau_mot[0]
    et apres on pointe un peut partout. Juste une question , tableau_mot est-il un tableau de pointeurs sur char ? parce que dans ce cas , va falloir refaire ton programme , car tout ca c'est du C, on a inventé le C++ pour ce débarasser de ce genre de trucs. Le faire en C++ avec des strings etc...rendra ton programme plus fiable , et le compilo t'engueulera de maniere compréhensible. Faire un mix C / C++ c'est pas DU TOUT recommandé. Utiliser des fonctions C , ok , mais utiliser le systeme de pointeurs sur char pour les strings etc... je suis sur que ton correcteur va raler si tu fais ca ^^

Discussions similaires

  1. Décomposition d'une propriété : grammaire ?
    Par mathieu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 04/05/2004, 09h47
  2. Décomposition d'une chaine de caractères
    Par stephdiplo150 dans le forum C
    Réponses: 3
    Dernier message: 04/03/2004, 22h50
  3. Requete de comptage de doublons spéciale
    Par COliveOnTheNet dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/09/2003, 10h11
  4. Décomposition RGB
    Par Claythest dans le forum Langage
    Réponses: 3
    Dernier message: 16/06/2003, 11h35
  5. Comptage de mots dans une chaîne
    Par kikinou dans le forum Pascal
    Réponses: 10
    Dernier message: 01/01/2003, 02h27

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