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 :

aide pour la résolution d' une exercice en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut aide pour la résolution d' une exercice en C
    Salut

    je veux s'il vous plait une aide pour la résolution cette exercice en C

    On considère une phrase comme étant une liste de mots (chaînes de caractères) séparés par un ou plusieurs espaces.
    On appellera cette phrase « phrase première » si chaque mot de cette phrase commence par la même lettre, et dans le cas contraire, on l’appellera « phrase non première ».
    Ecrire un programme, dans un langage de programmation structurée, qui contient une fonction permettant de lire une phrase saisie par l’utilisateur, et une autre fonction permettant de vérifier si cette phrase est première ou non et d’afficher dans chaque cas le message qu’il faut.
    Exemples :
    - La phrase : « Le lieutenant lit la liste » est première.
    - La phrase : « Mes mains molles » est première.
    - La phrase : « Cette phrase est non première » est non première

    et le deuxième

    Ecrire un programme qui remplace chaque espace d’une chaine de caractère par un retour à la ligne et ajoute au début et à la fin de chaque ligne deux étoiles, on suppose qu’il y a un seul espace séparant les mots de la chaine
    Exemple : « Examen Passage TDI 1A »
    **Examen**
    **Passage**
    **TDI**
    **1A**

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    Bonjour,

    De quelle aide as-tu besoin ?

    Nous ne ferons pas tes exercices à ta place.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    est ce que cette solution est bonne pour le deuxieme ex


    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
    #include<stdio.h>
     
    #include<string.h>
     
    main()
    {
        char phrase[50];
        int pos1=0,pos2,i,j;
        printf("entrez une phrase\n");
        gets(phrase);
        for(i=0;i<=strlen(phrase);i++)
        {
            if(phrase[i]==' ' || phrase[i]=='\0' || phrase[i]=='    ')
            {
                pos2=i;
                printf("**");
                for(j=pos1;j<pos2;j++)
                {
                    printf("%c",phrase[j]);
                }
                printf("**");
                pos1=pos2+1;
                printf("\n");
            }
        }
     
    }

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    Il faut mettre ton code en balise code (le # de l'éditeur).

    Ton code n'est pas indenté, il est difficilement lisible.

    1er problème, si je rentre une chaine de plus de 50 caractère, ton programme plantera : dépassement de tampon,, regardes du coté de fgets au lieu de gets pour éviter cela.

    Il te faut ensuite procéder en deux étapes :
    remplacer les espaces
    ajouter les étoiles en début et fin de chaine

    Pour remplacer les espaces, tu peux faire une boucle et tester tous les caractères, ou tu peux utiliser une fonction comme strchr
    Pour les étoiles, il va te falloir créer une chaine contenant "**", y concaténer la chaine lue (ou tu as remplacé les espaces), puis y ajouter "**" à la fin. Regardes la fonction strcat et les fonctions de sa famille (strcpy, etc).
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2017
    Messages : 4
    Par défaut
    merci beaucoup pour votre remarques

    s'il vous plait je veux aussi des remarques pour mon code de la première exercice

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #define n 40
     
    void saisi(char p[n])
    {
     printf("donner une phrase \n");
     gets(p);
    }
     
    int verifier(char p[n])
    {
     int a=1,m=1,i,r=0;
     int l=strlen(p);
     for(int i=0;i<l;i++)
     {
    	if(p[i]==' ')
    	{
    	if(p[i+1]==p[0]) a=a+1;
            m++;//nombre de mots
    	}
     }
     printf("a=%d et m=%d\n",a,m);
     if (m==a) r=1;
     return r;
    }
     
    main()
    {
     char p[n];
     int A;
     saisi(p);
     A=verifier(p);
     if(A==1)
    	printf("la phrase <%s> est premiere",p);
     else
    	printf("la phrase <%s> est non premiere",p);
    getch();
    }

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 260
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 260
    Par défaut
    Le fait de séparer les différents traitements comme tu l'as fait dans main est une bonne pratique.

    Dans la fonction saisi, si tu rentres plus de 40 caractères, tu auras un buffer overflow. Utilises plutôt la fonction fgets, qui permet d'indiquer un nombre maximal de caractères (ne pas oublier de laisser un caractère pour le \0).

    Pour vérifier, j'utiliserais plutôt la fonction strchr pour trouver les espaces.
    Sinon une boucle for sur chaque caractère de la chaine (strlen permettant de connaitre le nombre cooccurrences de la boucle), et un bloc if pour tester si le caractère actuel est un espace ou non ( avec remplacement du caractère).

    Ensuite, la fonction getch est une fonction de la bibliothèque ncurses, non seulement tu ne l'a pas déclaré dans les .h, mais tu ne peux pas l'utiliser comme ça, ncurses a ses propres fonctions de lecture et écriture de chaines.

    Tu peux utiliser getchar à la place.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

Discussions similaires

  1. Aide pour la résolution d'un exercice
    Par sheridan08 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 28/11/2009, 16h53
  2. Besoin d'aide pour la résolution d'un exercice
    Par alvarogill dans le forum Fortran
    Réponses: 0
    Dernier message: 06/03/2009, 22h02
  3. Réponses: 2
    Dernier message: 17/10/2008, 12h18
  4. [SYBASE] Aide pour l'écriture d'une requête
    Par karine77 dans le forum Sybase
    Réponses: 2
    Dernier message: 26/04/2005, 10h57

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