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 :

Programme qui lit un verbe régulier en er


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Par défaut Programme qui lit un verbe régulier en er
    slt

    Il ya des fautes

    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
    41
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    main()
    {
    char ch1[10],ch[10];
    int ln;
    do
    {
    printf("ecrire une chaine");
    gets(ch1);
    ln=strlen(ch1);
    }
    while (ch1[ln-2]!='e') || (ch1[ln-1]!='r')
    ch1[ln-2]='\0';
    /*je*/
    strcpy(ch2,ch1);
    strcat(ch2,"e");
    printf("je %s \n",ch2);
    /*tu*/
    strcpy(ch2,ch1);
    strcat(ch2,"es");
    printf("tu %s \n",ch2);
    /*il*/
    strcpy(ch2,ch1);
    strcat(ch2,"e");
    printf("il %s \n",ch2);
    /*nous*/
    strcpy(ch2,ch1);
    strcat(ch2,"ons");
    printf("nous %s \n",ch2);
    /*vous*/
    strcpy(ch2,ch1);
    strcat(ch2,"ez");
    printf("vous %s \n",ch2);
    /*ils*/
    strcpy(ch2,ch1);
    strcat(ch2,"ent");
    printf("ils %s \n",ch2);
    return;
    }

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonsoir,

    gcc donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    10-10-14.c:5: warning: return type defaults to ‘int10-10-14.c:5: warning: function declaration isn’t a prototype
    main doit être de forme int main(void) ou int main(int, char *[])

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    10-10-14.c:14: error: expected ‘;’ before ‘||’ token
    Il manque des parenthèses e n point virgule à la boucle do-swhile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while ((ch1[ln - 2] != 'e')
        ||(ch1[ln - 1] != 'r'));
    Au passage, le while est un peu inutile là où if suffit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    10-10-14.c:17: error: ‘ch2’ undeclared (first use in this function)
    10-10-14.c:6: warning: unused variable ‘ch’
    Tu déclares ch, mais tu utilises ch2. Il faut te décider.

    Sinon, gets est à proscrire, i faut mieux utiliser fgets.
    Tes tableaux risquent d'être trop petits pour les conjugaisons trop longues (ils perpétuent par exemple : 10 lettre + le '\0' qui dépasse du tableau.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Oui, il y a des fautes que le compilateur a dû prendre la peine de signaler.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 815
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par walidinho Voir le message
    slt

    Il ya des fautes

    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
    41
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    main()
    {
    char ch1[10],ch[10];
    int ln;
    do
    {
    printf("ecrire une chaine");
    gets(ch1);
    ln=strlen(ch1);
    }
    while (ch1[ln-2]!='e') || (ch1[ln-1]!='r')
    ch1[ln-2]='\0';
    /*je*/
    strcpy(ch2,ch1);
    strcat(ch2,"e");
    printf("je %s \n",ch2);
    /*tu*/
    strcpy(ch2,ch1);
    strcat(ch2,"es");
    printf("tu %s \n",ch2);
    /*il*/
    strcpy(ch2,ch1);
    strcat(ch2,"e");
    printf("il %s \n",ch2);
    /*nous*/
    strcpy(ch2,ch1);
    strcat(ch2,"ons");
    printf("nous %s \n",ch2);
    /*vous*/
    strcpy(ch2,ch1);
    strcat(ch2,"ez");
    printf("vous %s \n",ch2);
    /*ils*/
    strcpy(ch2,ch1);
    strcat(ch2,"ent");
    printf("ils %s \n",ch2);
    return;
    }
    En plus des fautes signalées par les autres intervenants, il y a matière à optimiser ce programme.

    Par exemple au lieu de coder à suivre le je, tu, il, ..., pourquoi ne pas créer une structure contenant le pronom et la terminaison ?

    Puis te suffit de balayer le tableau en rajoutant le pronom devant et la terminaison derrière. Par exemple un truc comme ceci
    Code c : 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
    typedef struct {
         char *pronom;
         char *fin;
    } t_conjugue;
     
    t_conjugue tab[]={
         {"je", "e"},
         {"tu", "es"},
         {"il", "e"},
         {"nous", "ons"},
         {"vous", "ez"},
         {"ils", "ent"},
         {NULL, NULL},
    };
     
    t_conjugue *pt;
     
    for (pt=tab; pt->pronom != NULL; pt++)
        printf("%s %s%s\n", pt->pronom, ch1, pt->fin);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Faire un programme qui lit un mot et affiche le nombre d'occurrences du mot
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/11/2010, 15h25
  2. quel est le programme qui lit mon fichier de config
    Par ikuzar dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 31/08/2010, 09h44
  3. idée pour un programme qui lit le code source
    Par snoopo dans le forum Langage
    Réponses: 3
    Dernier message: 20/07/2010, 10h24
  4. Réponses: 4
    Dernier message: 11/01/2010, 21h51
  5. [Turbo Pascal] Ecrire un programme qui lit une chaîne de caractères
    Par agan2012 dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 22/02/2009, 20h46

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