Programme en c
reggaerai
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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();
}
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();
}
A voir également:
- Programme en c
- Programme demarrage windows - Guide
- Mettre en veille un programme - Guide
- Message programmé iphone - Guide
- Programme word gratuit - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
4 réponses
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 !
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 !
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) {
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) {