Comment empêcher la fonction de se répéter ?
Résolu/Fermé
Harvard226
Messages postés
6
Date d'inscription
vendredi 12 janvier 2018
Statut
Membre
Dernière intervention
14 janvier 2018
-
13 janv. 2018 à 17:26
Harvard226 Messages postés 6 Date d'inscription vendredi 12 janvier 2018 Statut Membre Dernière intervention 14 janvier 2018 - 14 janv. 2018 à 00:24
Harvard226 Messages postés 6 Date d'inscription vendredi 12 janvier 2018 Statut Membre Dernière intervention 14 janvier 2018 - 14 janv. 2018 à 00:24
A voir également:
- Comment empêcher la fonction de se répéter ?
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction somme excel - Guide
3 réponses
NHenry
Messages postés
15190
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 février 2025
353
13 janv. 2018 à 17:39
13 janv. 2018 à 17:39
Sans code impossible de répondre.
Harvard226
Messages postés
6
Date d'inscription
vendredi 12 janvier 2018
Statut
Membre
Dernière intervention
14 janvier 2018
13 janv. 2018 à 18:31
13 janv. 2018 à 18:31
#include<stdio.h> #include<stdlib.h> #include<string.h> //renseignements sur les classes struct classe { int num; char nom[50]; int effec; }; struct classe classes; //fonction de recherche classe int recherche_classe(int code) { FILE*classe ; classe = fopen("classes.g11", "r"); if(classe !=NULL) { do { fscanf(classe,"%d ;%s ;%ld\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); if(classes.num== code) { fclose(classe); return 1; } }while(!feof(classe)); fclose(classe); return 0; } } //ajouter une classe <gras>Void ajouter_classe()</gras> { FILE*classe; int code; /*char c; c=';';*/ classe=fopen("classes.g11","a"); printf("\nentrez l'identifiant de la classe: "); scanf("%d",&code); fflush(stdin); while(recherche_classe(code)==1) { printf("\ncette classe existe deja\n"); printf("entrer un nouvel identifiant"); scanf("%d",&code); } if(classe != NULL) { classes.num=code; printf("%d\n",classes.num); printf("\nentrer le nom de la classe: "); //gets(classes.nom); scanf("%s",classes.nom); fflush(stdin); printf("%s\n",classes.nom); printf("\nentrer l'effectif de la classe:"); scanf("%d",classes.effec); printf("%d\n",classes.effec); fflush(stdin); fprintf(classe,"%d ;%s ;%d\n",classes.num,classes.nom,classes.effec); fflush(stdin); fclose(classe); } } //afficher la liste des classes void affiche_classe() { FILE*classe =fopen("classes.g11", "r"); printf("la liste des classes est :\n\n"); printf("Code de la classe \t; nom de la classe\t; effectif de la classe\n"); if(classe!=NULL) { do { fscanf(classe,"%d ;%s ;%d\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); printf("%d\t ;%s\t ;%d\n",classes.num,classes.nom,classes.effec); } while (!feof(classe)); fclose(classe); } } int main() { int choix; char T; do { printf("entrer 1 pour ajouter une classe\n"); printf("entrer 2 pour afficher la liste des classes\n"); printf("entrez votre choix: "); scanf("%d",&choix); while(choix>=1 && choix<=2) { switch(choix) { case 1:ajouter_classe(); break; case 2:affiche_classe(); break; } } printf("\nvoulez vous continuer O/N"); scanf("%s",&T); fflush(stdin); } while(T=='o' ||T=='O');}
pkpkmépkpk
Messages postés
341
Date d'inscription
samedi 14 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2018
52
13 janv. 2018 à 22:51
13 janv. 2018 à 22:51
Bonjour,
Je n'ai pourtant pas utilisé de boucle.
Bien sûr que si :
Je n'ai pourtant pas utilisé de boucle.
Bien sûr que si :
while(choix>=1 && choix<=2)(l. 107).
Harvard226
Messages postés
6
Date d'inscription
vendredi 12 janvier 2018
Statut
Membre
Dernière intervention
14 janvier 2018
13 janv. 2018 à 23:56
13 janv. 2018 à 23:56
Oui mais apres l'appel de la fonction, après un premier tour la fonction est encore rappeler alors que normalement l'exécution devrait se poursuivre dans le int main.
pkpkmépkpk
Messages postés
341
Date d'inscription
samedi 14 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2018
52
14 janv. 2018 à 00:02
14 janv. 2018 à 00:02
L'exécution se poursuit bien dans main, mais dans la boucle
while, donc elle est réexécutée.
Harvard226
Messages postés
6
Date d'inscription
vendredi 12 janvier 2018
Statut
Membre
Dernière intervention
14 janvier 2018
14 janv. 2018 à 00:07
14 janv. 2018 à 00:07
Dans ce cas là ne devrait-on pas me proposer normalement d'entrer 1 pour ajouter une classe et 2 pour afficher la liste des classes. ?
pkpkmépkpk
Messages postés
341
Date d'inscription
samedi 14 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2018
52
14 janv. 2018 à 00:08
14 janv. 2018 à 00:08
Non puisque ces instructions sont hors de la boucle
while.
Harvard226
Messages postés
6
Date d'inscription
vendredi 12 janvier 2018
Statut
Membre
Dernière intervention
14 janvier 2018
14 janv. 2018 à 00:24
14 janv. 2018 à 00:24
Oui effectivement ça marche maintenant.
Merci pkpkmépkpk
Merci pkpkmépkpk