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 :

besoin de lumière pour un programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut besoin de lumière pour un programme
    Bonjour,
    Je suis novice en la matière et j'aurais besoin d'aide, je doit réaliser un programme permettant de lire une chaine de caractère (30 maximum) entrer au clavier et ensuite de dire combien de caractères ont été entré et combien de mots y a t-il.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdio.h>
    #include<string.h>
     
    void main()
    {
          char chaine[30];
          printf("Entrer une phrase :");
          scanf("%30s",&chaine);
          printf("Le nbre de caractère entré est %d",strlen(chaine));
    }
    Pouvez vous me dire si cette partie est juste et pour le comptage je ne vois pas comment je peux faire pouvez vous m'aidez?
    merci

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par thuglife Voir le message
    Je suis novice en la matière et j'aurais besoin d'aide, je doit réaliser un programme permettant de lire une chaine de caractère (30 maximum) entrer au clavier et ensuite de dire combien de caractères ont été entré et combien de mots y a t-il.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include<stdio.h>
    #include<string.h>
     
    void main()
    {
          char chaine[30];
          printf("Entrer une phrase :");
          scanf("%30s",&chaine);
          printf("Le nbre de caractère entré est %d",strlen(chaine));
    }
    Pouvez vous me dire si cette partie est juste et pour le comptage je ne vois pas comment je peux faire pouvez vous m'aidez?
    merci
    A ma connaissance (limitée de scanf()), tu ne peux pas saisir une 'phrase' (mots séparés par des espaces) avec scanf().

    A part ça, ton code est assez buggé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include<stdio.h>
    #include<string.h>
     
    int main (void)
    {
       char chaine[30];
     
       printf ("Entrer une phrase :");
       scanf ("%29s", chaine);
       printf ("Le nbre de caracteres entre est %d\n", strlen (chaine));
     
       return 0;
    }
    Pose des questions si tu ne comprends pas (mais je le répète, ce code ne prend qu'un mot, pas une phrase).

    Pour saisir une ligne de texte, on utilise fgets(). Détails dans la doc.

  3. #3
    Membre confirmé Avatar de amine6441
    Inscrit en
    Novembre 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 85
    Par défaut
    Salut THUGLIF
    Ce que a dit MR EMMANUEL est juste car scanf lit juste un mots ou bien elle lit jusqu’a « »espace alors tu dois lire avec getchar() ou bien gets()... au lieu de scanf()
    Pour le comptage de mots tu dois mettre un teste si tu trouves espace tu incrémente le compteur qui compte les mots
    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
    #include <stdio.h>
     
    #include <conio.h>
    void main(){
    	char chaine[30];
    	char c;
    	int cp=0,cp1=1,test;
    	clrscr();
    	printf("entrer une chaine de 30 caracteres :   ");
    	    while ((c = getchar()) != '\n'){
    	    printf("%c", c);
     
    	    cp++;
     
    	    if(c==' ')cp1++;
     
    	    }
     
    	printf("voici le nombre de caractere [%d] et voici le nombre de mots[%d]",cp,cp1);
    	getch();
    	}

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par amine6441 Voir le message
    Pour le comptage de mots tu dois mettre un teste si tu trouves espace tu incrémente le compteur qui compte les mots
    Et si le mot est séparé par 2 espaces ?

    D'autre part, tu as ajouté du code non portable pour une raison qui m'échappe. Et je rappelle que main() retourne int. Toujours.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 72
    Par défaut
    merci pour vos réponses

  6. #6
    Membre confirmé Avatar de amine6441
    Inscrit en
    Novembre 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 85
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Et si le mot est séparé par 2 espaces ?

    D'autre part, tu as ajouté du code non portable pour une raison qui m'échappe. Et je rappelle que main() retourne int. Toujours.
    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
    27
    28
    29
    30
    31
    #include<conio.h>
    #include<stdio.H>
    #include<string.H>
     
     
    int main(void){
    	char *chaine,caractere;
    	int test=0,cp1=1;
    	clrscr();
    	printf("entrer une chaine de 30 caracteres	:\n");
    	gets(chaine);
    	int langeur =strlen(chaine);
     
    	for(int i=0;i<langeur;i++){
    		caractere=chaine[i];
    		if(caractere==' '){
    			if(test==0){
    				cp1++ ;
    				test=1;
    			}
    		}
    		else{
    			test=0;
    		}
    	}
     
    printf("le nombre de caractere est  :  %d\nle nombre de mots est  :  %d",langeur,cp1);
     
    getch();
    return 0;
    }
    Maintenant même si les mots sans sépares par plusieurs espace c’est pas un problème

Discussions similaires

  1. Besoin d'aide pour un programme de PGCD
    Par Shapsed dans le forum C
    Réponses: 4
    Dernier message: 23/09/2007, 15h06
  2. besoin d'aide pour mon programme
    Par pouyoudu17 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 28/05/2007, 22h18
  3. Réponses: 4
    Dernier message: 24/04/2007, 10h18
  4. [débutant] besoin d'aide pour un programme
    Par acdchornet dans le forum C++
    Réponses: 12
    Dernier message: 26/10/2006, 22h32
  5. [Free Pascal] Besoin d'aide pour un programme
    Par ricomix dans le forum Free Pascal
    Réponses: 3
    Dernier message: 04/06/2006, 17h01

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