Calcule du nombre des mots dans une phrase

[Fermé]
Signaler
Messages postés
1
Date d'inscription
dimanche 31 mai 2015
Statut
Membre
Dernière intervention
31 mai 2015
-
Messages postés
41452
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
17 septembre 2021
-
Bonjour

j'aimerais bien savoir comment rédiger un programme en langage C permettant de calculer le nombre des mots saisis (et séparés avec un ou plusieurs espaces) dans une phrase terminée par un point sans utiliser l'instruction chaine (ça je sais comment la faire) mais juste avec l'instruction boucle et if else si c'est nécessaire.

Exemple
entrée : le monde est petit.
sortie : le nombre des mots est : 4

cordialement
A voir également:

3 réponses

Salut,

Tu stockes ce que rentre l'utilisateur dans une liste de caractère.
Tu parcours tous les caractères qu'il a entré, tu y ajoute 1 et tu comptes le nombre d'espaces que tu vois (attention, il se peut que l'utilisateur mette deux espaces entre des mots c'est à gérer si besoin).
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
1
Date d'inscription
dimanche 31 mai 2015
Statut
Membre
Dernière intervention
31 mai 2015

Votre réponse m'est toujours incompréhensible, pouvez vous me rédigez votre solution en langage c si c'est possible ?
Bonsoir,

J'imagine que tu cherches quelque chose comme ça :

#include <stdio.h>
#include <stdlib.h>

int nbDeMots(const char* saisie);

int main(int argc, char *argv[])
{
    char saisie[] = "Ceci    est    un    test    pour    CCM.";
    int mot = 0;

    mot = nbDeMots(saisie);

    printf("Il y a %d mots", mot);


    return 0;
}

int nbDeMots(const char* saisie)
{
    int nb = 0, compt = 0;
    char cLu = 0;
    int mot = 0;

    do
    {
        cLu = saisie[nb];
        if(cLu == 32 && saisie[nb-1] != 32)
        {
            mot++;
        }

        nb++;
    }
    while(cLu != '\0');


    char quest = strchr(saisie, '?');
    char exc = strchr(saisie, '!');
    if((quest || exc) == NULL)
    {
    mot++;
    }

    return mot;
}


Résultat (avec plusieurs éspaces ou pas) :

Il y a 6 mots dans la chaine : Ceci    est    un    test    pour    CCM.

Le programme gère également le type de phrase (question, affirmation, exclamation)

<\EchoIsON>
Messages postés
1
Date d'inscription
dimanche 31 mai 2015
Statut
Membre
Dernière intervention
31 mai 2015

je vous remercie pour cette réponse, j'ai essayé votre solution mais ça n'a pas marché, il se peut que j'aie tort mais ce que je voudrais vraiment savoir s'il y a une solution simple juste avec des boucles et if else sans utiliser l'instruction de [chaine] ?
Messages postés
41452
Date d'inscription
mercredi 11 avril 2007
Statut
Modérateur
Dernière intervention
17 septembre 2021
11 814
Bonsoir
Les forums de CCM n'ont pas pour vocation de faire vos devoirs à votre place..
en conséquence toutes demandes de ce type finissent inexorablement avec les hors sujets...

A consulter
https://www.commentcamarche.net/faq/10925-demander-de-l-aide-pour-vos-exercices-sur-ccm

Sur ce bonne réflexion... cela vous sera bien plus profitable.