Menu

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

Mr WaLiDoS 51 Messages postés mercredi 2 décembre 2009Date d'inscription 4 mai 2011 Dernière intervention - 13 oct. 2010 à 21:35 - Dernière réponse : fiddy 11141 Messages postés samedi 5 mai 2007Date d'inscriptionContributeurStatut 18 octobre 2016 Dernière intervention
- 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 

6 réponses

fiddy 11141 Messages postés samedi 5 mai 2007Date d'inscriptionContributeurStatut 18 octobre 2016 Dernière intervention - 13 oct. 2010 à 22:05
0
Utile
Bonjour,

Commence par nous expliquer ce que tu as fait, compris ? Explique nous ce qui te pose problème, etc.
Mr WaLiDoS 51 Messages postés mercredi 2 décembre 2009Date d'inscription 4 mai 2011 Dernière intervention - 13 oct. 2010 à 22:16
0
Utile
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");
Mr WaLiDoS 51 Messages postés mercredi 2 décembre 2009Date d'inscription 4 mai 2011 Dernière intervention - 13 oct. 2010 à 23:45
0
Utile
alors ?
fiddy 11141 Messages postés samedi 5 mai 2007Date d'inscriptionContributeurStatut 18 octobre 2016 Dernière intervention - 14 oct. 2010 à 00:12
0
Utile
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 ?
Mr WaLiDoS 51 Messages postés mercredi 2 décembre 2009Date d'inscription 4 mai 2011 Dernière intervention - 14 oct. 2010 à 22:36
-1
Utile
1
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 11141 Messages postés samedi 5 mai 2007Date d'inscriptionContributeurStatut 18 octobre 2016 Dernière intervention - 14 oct. 2010 à 23:34
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,