Programme qui lit un verbe régulier Algo+C [Fermé]

Messages postés
51
Date d'inscription
mercredi 2 décembre 2009
Statut
Membre
Dernière intervention
4 mai 2011
- - Dernière réponse : fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
- 14 oct. 2010 à 23:34
Bonjour,
en utulisant les fonction gets,puts,strcat,strlen


Programme qui lit un verbe régulier (er) au clavier
+
affiche la conjugaison au present de l'indicatif
+
controlez s'il s'agit bien d'un vb en er avant de conjuger

comment se fait cet exercice ?

Afficher la suite 

5 réponses

Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1611
0
Merci
Bonjour,

Commence par nous expliquer ce que tu as fait, compris ? Explique nous ce qui te pose problème, etc.
Messages postés
51
Date d'inscription
mercredi 2 décembre 2009
Statut
Membre
Dernière intervention
4 mai 2011
0
Merci
Ecrire("donner un verbe avec le terminaison en er");
Lire("ch");
si ch=vrai alors
strcat(e)
strcat(es)
strcat(e)
strcat(ons)
strcat(etez)
strcat(ent)
sinon
Ecrire("ce verbe n'est pas en er");
Messages postés
51
Date d'inscription
mercredi 2 décembre 2009
Statut
Membre
Dernière intervention
4 mai 2011
0
Merci
alors ?
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1611
0
Merci
Tu mélanges code C (strcat) avec algorithmique (Lire, Si, ...).
Tu dois utiliser exclusivement puts, gets, strcat et strlen ou tu peux utiliser d'autres fonctions genre printf ?
Messages postés
51
Date d'inscription
mercredi 2 décembre 2009
Statut
Membre
Dernière intervention
4 mai 2011
-1
Merci
Il ya des fautes

#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;
}
fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1611 -
main renvoie un entier. Il faut donc mettre : int main(void) et à la fin return 0;

A la fin de ton while (do while) tu dois mettre un point virgule.

Sinon très bien pour ton code ;-). Après, dommage d'utiliser gets qui est une fonction à bannir, mais bon si ton prof l'a demandé... De plus tu pourrais très bien te passer des fonctions strcpy et strcat.
Par exemple : printf("je %se\n", ch1); etc. pour l'ensemble des personnes.
Et en amélioration, si tu connais les tableaux, tu peux remplacer toutes les personnes (je, tu, il, ...) par une simple boucle for.
Et enfin, si tu as vu les fonctions, tu pourrais t'en créer une plutôt que de dupliquer ton strcpy, strcat et printf. Mais ce n'est que des améliorations, ton code est fonctionnel (à condition de corriger les erreurs ci-dessus).

Cdlt,