Programme en c

Fermé
reggaerai Messages postés 15 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 12 novembre 2012 - 15 déc. 2009 à 23:29
 Utilisateur anonyme - 16 déc. 2009 à 17:39
Bonjour,
j'ai un problème quand je fait entrer le nom rechercher les messages "ce mot n'existe pas " ce répète trop de fois ( = le nombre de nom) donc il faut que je fait sortir else de la boucle chose que j'arrive pas à le faire car il me donne toujours des problèmes alors qu'est que je dois faire ??
une 2ème chose c'est que dois je faire pour que je fait enter juste la 1 lettre ou 2 première lettre il me donne tous les noms qui commencent par cette lettres ??
voila le programme :
#include<conio.h>
#include<stdio.h>
#include<string.h>
char mot[10];
int n,i;
struct etudiant
{
char nom[10];
};
struct etudiant etud[10];
void recherche()
{
printf("\n Donner le mots que vous voulez rechercher : ");
scanf("%s",&mot);
for(i=0;i<n;i++)
{
if(strcmp(mot,etud[i].nom)==0)
{
printf("les mots sont: %s ",etud[i].nom);
}
else
{
printf("ce mot n'existe pas");
}
}
}
void main()
{
clrscr();
printf("Entrer le nombre de nom : ");
scanf("%d",&n);
printf("\n Entrer les noms d'etudiant : ");
for(i=0;i<n;i++)
{
scanf("\n %s",&etud[i].nom);
}
recherche();
getch();
}

4 réponses

Utilisateur anonyme
16 déc. 2009 à 09:22
Bonjour,
pour ta première question, il faut mettre le else en dehors de la boucle for.
Vu que tu n'as pas de if avant, il va donc falloir modifier un peu ton code.


Crée une variable trouve=0; initialise la bien à 0, c'est important.
Si un mot est trouvé, trouve devient égal à 1.

Ensuite, en dehors du for, tu vas mettre if(!trouve) printf("Mot non trouvé");

Histoire de ne l'avoir d'écrit qu'une fois !
0
reggaerai Messages postés 15 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 12 novembre 2012
16 déc. 2009 à 16:13
@ ozox
merci beaucoup ca marche bien maintenant
est ce qu'il y a des repenses pour la question 2 ??
0
Bonjour,

pour la deuxième question, tu dois utilser les fonctions:
- strlen pour la longueur de la sous-chaine à rechercher
- strncmp pour comparer seulement une partie de la chaine qui doit commencer par la sous-chaine.

chaine1="aaa";
l_chaine1=strlen(chaine1); // l_chaine1=3
chaine2="aaabbb";
if (strncmp(chaine1,chaine2,l_chaine1)==0) {
0
Utilisateur anonyme
16 déc. 2009 à 17:39
Ou sinon, tu filtre tout ton texte, et à chaque fois qu'il y a un espace ou un retour a la ligne, tu regardes si la lettre qui suit est la meme que celle entrée, si oui tu stockes le mot qui suit (toutes les lettres suivantes jusqu'à espace ou '\n') et tu les écrit ensuite.
0