IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Créer un fichier « .h » (menu)


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Créer un fichier « .h » (menu)
    Salut a tous, je suis a bout de souffre. je n'arrive pas a appeler mes programmes.
    En fait, mes codes sont très long. Je veux les couper en modules. Voila ce que je fais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    #include<stdio.h> 
    #include<stdlib.h> 
    #include<conio.h> 
    #include<time.h> 
    #include"menu.h" //je rattache ma fonction affiche_menu() au main.c 
    #include"information.h" //je rattache ma fonction information() au main.c 
    int main() 
    { 
    char ch = 'A';'B';'C';'D';'E';'F';'G';'H';//Declaration des caracteres 
     
    do 
    { 
    affiche_menu();//Appelle de la fct affiche_menu 
    ch = getch(); 
    scanf("%c",&ch); //lecture des characteres. 
    switch (ch) 
    { 
    case 'A': 
    printf("\n\nBienvenue sur le programme permettant de saisir des informations des etudiants\nPressez une touche quelconque"); 
    void information(); //j'appelle ma fonction. 
     
    getch(); 
    break; 
    case 'B': 
    printf("\n\nBienvenue sur le Programme permettant d afficher les informations saisies au point 1\nPressez une touche quelconque"); 
    getch(); 
    break; 
    case 'C': 
    printf("\n\nBienvenue sur le Programme permettant de trouver la factorielle d une valeur entiere\nPressez une touche quelconque"); 
    getch(); 
    break; 
    case 'D':printf("\n\nBienvenue sur le Programme permettant de trouver la combinaison de deux valeurs entieres"); 
    getch(); 
    break; 
    case 'E':printf("\n\nBienvenue sur le Programme permettant de former l anagramme d un nom d une personne"); 
    getch(); 
    break; 
    case 'F':printf("\n\nBienvenue sur le Programme permettant de changer la date de l ordinateur"); 
    getch(); 
    break; 
    case 'G':printf("\n\nBienvenue sur le Programme permettant d eteindre l ordinateur"); 
    getch(); 
    break; 
    case 'H':printf("\n\nBienvenue sur le Programme permettant de classer par ordre croissant et decroissant des valeurs saisis"); 
    getch(); 
    break; 
    default: 
    printf("\n\nVotre choix est erroné\nPressez une touche quelconque et réessayez\n"); 
    getch(); 
    break; 
    } 
    } while (ch != '4'); 
    return 0; 
    }


    Ca marche ps,svp j'ai vous prie de m'aider.

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bazvindous Voir le message
    Ca marche ps,svp j'ai vous prie de m'aider.
    Salut
    http://fr.lang.free.fr/cours/Generalites_Csyst_v1.0.pdf (p. 9 a 11)

    Citation Envoyé par bazvindous Voir le message
    je suis a bout de souffre...
    Jolie formule. Plus adaptee a Belzebuth qu'a un humain qui serait plutot a bout de souffle...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut

    La ligne void information(); //j'appelle ma fonction. est mauvaise, elle redéclare la fonction au lieu de l'appeler.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Médinoc Voir le message

    La ligne void information(); //j'appelle ma fonction. est mauvaise, elle redéclare la fonction au lieu de l'appeler.
    Merci pour ta reponce rapide, et remarque. En faite c'est justement ca mes problemes.
    J'ai 7 programmes(deja preparer) a mettre dans le menu,mais je ne sais pas comment.
    Comme celui-la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
       #include<stdio.h>
        #include<conio.h>
     
        #define max 500
        void information()
     
        {
        char nom[max];
        char prenom[max];
        char adresse[max];
        char sexe[max];
        char option[max];
        int age;
        int telephone;
        printf("");
        gets(nom);
        printf(" Entrer votre nom : \n");
        gets(nom);
        printf("Entrer votre prenom: \n");
        gets(prenom);
         printf("Entrer votre adresse: \n");
        gets(adresse);
         printf("Entrer votre sexe: \n");
        gets(sexe);
         printf("Entrer votre option: \n");
        gets(option);
         printf("Entrer votre age: \n");
        scanf("%d",&age);
         printf("Entrer votre telephone: \n");
        scanf("%d",&telephone);
     
                            //creation d'un pointeur FILE
        FILE*pointeurfichier=NULL;
                            //appel a la fonction fopen
        pointeurfichier=fopen("Les informations des etudians.doc","w");
                            //test sur l'ouverture
        if(pointeurfichier!=NULL)
        {
            fprintf(pointeurfichier,"### les informations ###\n");
            fprintf(pointeurfichier," %s \n",nom);
            fprintf(pointeurfichier,"%s \n", prenom);
            fprintf(pointeurfichier,"%s \n", adresse);
            fprintf(pointeurfichier," %s \n", sexe);
            fprintf(pointeurfichier,"%s \n", option);
            fprintf(pointeurfichier,"%d \n",age);
            fprintf(pointeurfichier,"%d \n",telephone);
        }
        else
        {
            printf("impossible d'ouvrir le fichier");
        }
         fclose(pointeurfichier);
     
     
     
    return(0);
     
    }
    Comment faire(qoui mettre dans le menu) pour l'appeler a l'aide du menu, en tappant A.
    merci a tous.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    D'abord, des fonctions pour la saisie de chaîne sans utiliser gets():
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*fpurge.h*/
     
    #ifndef FPURGE_H_20130223
    #define FPURGE_H_20130223
     
    #include <stdio.h>
     
    int truncate_newline(char *str);
    int fpurge(FILE *f);
    int fclean(char *str, FILE *f);
     
    #endif /* ! FPURGE_H_20130223 */
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    /*fpurge.c*/
    #include <stdio.h>
     
    /*Fonction pour retirer le \n à la fin d'une chaîne
      (en fait, elle tronque la chaîne au premier \n rencontré).*/
    /* Returns a nonzero value if found, zero if not. */
    int truncate_newline(char *str)
    {
    	int bRet=0;
    	if(str!=NULL)
    	{
    		char *pNewline = strchr(str, '\n');
    		if(pNewLine!=NULL)
    		{
    			bRet = 1;
    			*pNewLine = '\0';
    		}
    	}
    	return bRet;
    }
     
    /*Fonction pour vider le flux entrant jusqu'à la fin de la ligne.*/
    /*Returns 0 if OK, a negative value if EOF.*/
    int fpurge(FILE *f)
    {
    	int c;
    	while((c=fgetc(f))!=EOF && c!='\n')
    	{ }
    	return (c==EOF ? -1 : 0);
    }
     
    /*Fonction qui retire le \n à la fin ET s'assure que toute la ligne a été lue.*/ 
    /* Returns 0 if buffer is full, a positive value if line is complete,
       a negative value if EOF (implies buffer full). */
    int fclean(char *str, FILE *f)
    {
    	int ret = 1;
    	if(!truncate_newline(str))
    		ret = fpurge(f);
    	return ret;
    }
    Ensuite, le code utile:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*Information.h*/
     
    #ifndef INFORMATION_H_20130223
    #define INFORMATION_H_20130223
     
    void information(void);
     
    #endif /* ! INFORMATION_H_20130223 */
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    /*Information.c*/
    #include<stdio.h>
    #include "fpurge.h"
     
    #define MAX 500
    void information(void)
    {
    	char nom[MAX];
    	char prenom[MAX];
    	char adresse[MAX];
    	char sexe[MAX];
    	char option[MAX];
    	int age;
    	int telephone;
    	printf("\n");
     
    	printf(" Entrer votre nom : \n");
    	fgets(nom, MAX, stdin);
    	fclean(nom, stdin);
    	printf("Entrer votre prenom: \n");
    	fgets(prenom, MAX, stdin);
    	fclean(prenom, stdin);
    	printf("Entrer votre adresse: \n");
    	fgets(adresse, MAX, stdin);
    	fclean(adresse, stdin);
    	printf("Entrer votre sexe: \n");
    	fgets(sexe, MAX, stdin);
    	fclean(sexe, stdin);
    	printf("Entrer votre option: \n");
    	fgets(option, MAX, stdin);
    	fclean(option, stdin);
    	printf("Entrer votre age: \n");
    	scanf("%d",&age);
    	fpurge(stdin);
    	printf("Entrer votre telephone: \n");
    	scanf("%d",&telephone);
    	fpurge(stdin);
     
    	//creation d'un pointeur FILE
    	FILE*pointeurfichier=NULL;
    	//appel a la fonction fopen
    	pointeurfichier=fopen("Les informations des etudians.txt","w");
    	//test sur l'ouverture
    	if(pointeurfichier!=NULL)
    	{
    		fprintf(pointeurfichier,"### les informations ###\n");
    		fprintf(pointeurfichier," %s \n",nom);
    		fprintf(pointeurfichier,"%s \n", prenom);
    		fprintf(pointeurfichier,"%s \n", adresse);
    		fprintf(pointeurfichier," %s \n", sexe);
    		fprintf(pointeurfichier,"%s \n", option);
    		fprintf(pointeurfichier,"%d \n",age);
    		fprintf(pointeurfichier,"%d \n",telephone);
    		/*Note: j'ai mis le fclose() dans le printf(),
    		  parce que fclose(NULL) est un comportement indéterminé (qui plante sous Visual),
    		  contrairement à free(NULL) qui est garanti ne rien faire.*/
    		fclose(pointeurfichier);
    	}
    	else
    	{
    		printf("impossible d'ouvrir le fichier.\n");
    	}
    }
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    /*Main.c*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include "menu.h" //je rattache ma fonction affiche_menu() au main.c
    #include "information.h" //je rattache ma fonction information() au main.c
     
    int main(void)
    {
    	char ch = 0;
    	do
    	{
    		affiche_menu();//Appelle de la fct affiche_menu
    		/* On fait l'un ou l'autre, pas les deux.*/
    		ch = getch();
    		/*scanf("%c",&ch); //lecture des characteres. */
    		switch (ch)
    		{
    		case 'A':
    		case 'a':
    			printf("\n\nBienvenue sur le programme permettant de saisir des informations des etudiants\nPressez une touche quelconque");
    			information(); //j'appelle ma fonction.
    			getch();
    			break;
    		case 'B':
    		case 'b':
    			printf("\n\nBienvenue sur le Programme permettant d afficher les informations saisies au point 1\nPressez une touche quelconque");
    			getch();
    			break;
    		case 'C':
    		case 'c':
    			printf("\n\nBienvenue sur le Programme permettant de trouver la factorielle d une valeur entiere\nPressez une touche quelconque");
    			getch();
    			break;
    		case 'D':
    		case 'd':
    			printf("\n\nBienvenue sur le Programme permettant de trouver la combinaison de deux valeurs entieres");
    			getch();
    			break;
    		case 'E':
    		case 'e':
    			printf("\n\nBienvenue sur le Programme permettant de former l anagramme d un nom d une personne");
    			getch();
    			break;
    		case 'F':
    		case 'f':
    			printf("\n\nBienvenue sur le Programme permettant de changer la date de l ordinateur");
    			getch();
    			break;
    		case 'G':
    		case 'g':
    			printf("\n\nBienvenue sur le Programme permettant d eteindre l ordinateur");
    			getch();
    			break;
    		case 'H':
    		case 'h':
    			printf("\n\nBienvenue sur le Programme permettant de classer par ordre croissant et decroissant des valeurs saisis");
    			getch();
    			break;
    		default:
    			printf("\n\nVotre choix est erroné\nPressez une touche quelconque et réessayez\n");
    			getch();
    			break;
    		}
    	} while (ch != '4');
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Slt Medinoc, c'est super vraiment super ,mil merci ça fait très longtemps que je cherche qlq pour m'aider (2 semaines environ).

    Mais pour être sincère avec vous je ne suis pas trop claire dans vos modifications. Il me reste 6 autres programmes a mettre dans le menu. Je suis NOVIS (DÉBUTANT) en langage C. Se serait sympa de m’éclaircir.
    N.B:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int bRet=0;
    	if(str!=NULL)
    	{
    		char *pNewline = strchr(str, '\n');//erreur ici (Newline)
    		if(pNewLine!=NULL)                   // c'etait l aulieut de L (NewLine)
    		{
    			bRet = 1;
    			*pNewLine = '\0';
    		}
    	}
    dans le code: fpurge je pirge rien du tout,explique-moi les codes svp.
    dans le code: fpurge.h, a quoi sert le _20130223
    Et enfin dans les deux autres fichier: main.c et information.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /*main.c*/
    //quel sont les modifications que vous faite dans le code et pourqoui???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /*information.c*/
    //quel sont les modifications que vous faite et pourquoi???
    Encore une fois merci.

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Bonjour,
    Pour la première erreur, j'ai oublié d'inclure <string.h>

    Pour le reste, en gros, ça part d'un principe: La fonction gets() ne doit pas être utilisée. Jamais.
    Alors on utilise fgets() à la place. Seulement:
    • Vu qu'on limite la longueur, il faut finir de lire la ligne si elle est plus grande que le tableau de caractères
    • fgets() ne retire pas le \n à la fin, contrairement à gets().

    Pour ça, la fonction fpurge() finit de lire la ligne. Mais il ne faut l'appeler que si on est sûr qu'elle n'a pas été lue entièrement.
    La fonction truncate_newline() cherche le \n dans le buffer, le supprime, et retourne une valeur non-nulle si elle l'a trouvé.
    La fonction fclean() met tout ça ensemble:
    • Si la ligne saisie était assez courte pour tenir dans le buffer, celui-ci contiendra le \n et il n'y aura rien d'autre à faire puisqu'elle aura été lue entièrement.
    • Dans le cas contraire, le buffer ne contiendra pas de \n, donc truncate_newline() retournera zéro, et fpurge() sera appelée pour finir de lire la ligne.


    La suite au prochain post.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    dans le code: fpurge.h, a quoi sert le _20130223
    Vu que tu demandes spécifiquement le _20130223, je suppose que tu connais déjà les gardes d'inclusion. J'ai juste rajouté ça (la date d'aujourd'hui) pour être sur de ne pas avoir de conflit si jamais il y a un autre fichier nommé fpurge.h quelque part.

    /*information.c*/
    //quel sont les modifications que vous faite et pourquoi???
    La principale modif, ça a été d'utiliser fgets() + fclean() plutôt que gets(). J'ai aussi rajouté un fpurge() après chaque scanf(), parce que la fonction scanf() telle qu'elle est appelée ici ne lit pas la ligne en entier.

    /*main.c*/
    //quel sont les modifications que vous faite dans le code et pourqoui???
    Pour les case, ça me parait tellement évident que je ne sais pas comment l'expliquer.
    Mon autre modif, c'est d'appeler information() correctement.
    C'est à peu près tout ce que j'ai changé.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Ok Medinoc merci, il y a bcp de choses qui me depassent. Passons aux restes de mes problemmes.
    Tout mon pb c'est que-je comprends ps comment appliquer les principes,l'odres
    pr que mon fichies main.c appelle tous mes programmes, car ils ont au nombres de 6.
    Par EX 2 programmes et d'autres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    //ordre croissant.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include "fpurge.h"
    #include <string.h>
    void ordre_crois_et_decrois()
    {
        printf("\n\t\t****Bienvenue sur classement des valeurs****\n\t\t");
    }
     
    int main()
    {
    /* Déclarations */
     int tab[50]; /* tableau donné  */
     int N;     /* dimension      */
     int I;     /* indice courant */
     int MIN;   /* position du minimum */
     int MAX;   /* position du maximum */
     /* Saisie des données */
     printf("  Entre la Dimension du tableau (max.50) : ");
     scanf("%d", &N );
     for (I=0; I<N; I++)
        {
         printf("Element %d : ", I);
         scanf("%d", &tab[I]);
        }
     /* Affichage du tableau */
     printf("Tableau entre:\n");
     for (I=0; I<N; I++)
         printf("%d ", tab[I]);
     printf("\n");
     printf("\n\n!!!!!TRIAGE DES DONNES!!!!!\n\n");
     printf("--Affichage Croissant--\n\n");
    system("PAUSE");
    /*affichage par ordre croissant*/
    char j,k;
    for(j=N;j>0;j--)
    {
        for(I=0;I<j-1;I++)
        {
            if(tab[I]>tab[I+1])
            {
                k=tab[I];
                tab[I]=tab[I+1];
                tab[I+1]=k;
            }
        }
    }
    for(I=0;I<N;I++)
    {
        printf("%d\t",tab[I]);
    }
    printf("\n\n");
    printf("--Affichage decroissant--\n\n");
    system("PAUSE");
    /*affichage decroissant*/
    for(j=N;j>0;j--)
    {
        for(I=0;I<j-1;I++)
        {
            if(tab[I]<tab[I+1])
            {
                k=tab[I];
                tab[I]=tab[I+1];
                tab[I+1]=k;
            }
        }
    }
    for(I=0;I<N;I++)
    {
        printf("%d\t",tab[I]);
    }
     printf("\n");
    getch();
    printf("\n\nMerci!! aurevoir....\n");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    //ordre croissant.h
    #ifndef ordre_crois_et_decrois_H_20130223
    #define ordre_crois_et_decrois_H_20130223
     
     void ordre_crois_et_decrois();
    #endif /* ! ordre_crois_et_decrois_H_20130223 */
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    // factorielle.c
    # include <stdio.h>
    # include <stdlib.h>
    #include "fpurge.h"
    #include<string.h>
    int main(int argc, char *argv[])
    { factorielle();
        int fact = 0,n = 0;
        system ("PAUSE");
        printf("\n\nEntrer une valeur:  ");
        scanf("%d", &n);
        for (fact = 1; n > 1; n--)
        fact*=n;
        printf("Votre factorielle est : %d\n\n",fact);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // factorielle.h
     
    #ifndef Factorielle_H_20130223
    #define Factorielle_H_20130223
     void factorielle();
     
    #endif /* ! Factorielle_H_20130223 */
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // main.c
                case 'c':
                case'C':
                printf("Entrer un nombre entier:\n");
                factorielle();
                break;
                :
                :
                case 'h':
                case'H':
                printf(" Ordre croissant et decroissant un ensemble de valeur saisir par un utilisateur:\n");
                ordre_crois_et_decrois();
    Les deux donnent presque les memes erreurs. J'essaie de faire les mm modif que toi ca ne marche pas.
    merci.

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il va falloir préciser quelles erreurs tu as.

    L'erreur principale que je vois par contre, c'est que tu déclares et appelles une fonction factorielle(), mais tu ne m'as pas montré sa définition.

    Et aussi, tu sembles avoir plusieurs main().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bonjour Medi...ravis de vous ré-parlez

    C:\Users\GOGO\Desktop\pratique\main.c|11|multiple definition of `main'|
    obj\Debug\factorielle.o:C:\Users\GOGO\Desktop\pratique\factorielle.c|14|first defined here|
    C:\Users\GOGO\Desktop\pratique\factorielle.c|20|warning: 'fact' is used uninitialized in this function [-Wuninitialized]|
    ||=== Build finished: 4 errors, 4 warnings (0 minutes, 5 seconds) ===|

    Vous avez raison j'ai plusieurs main comment corriger cette erreur??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    /*Main.c*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include "menu.h" //je rattache ma fonction affiche_menu() au main.c
    #include "information.h" //je rattache ma fonction information() au main.c
    #include "factorielle.h"
    #include "croissant_decroissant.h"
     
    case 'C':
    		case 'c':
    			printf("\n\nBienvenue sur le Programme permettant de trouver la factorielle d une valeur entiere\nPressez une touche quelconque");
    			long factorielle( long fact, long n);
    			getch();
    			break;
                    :
                    :
    case 'H':
    		case 'h':
    			printf("\n\nBienvenue sur le Programme permettant de classer par ordre croissant et decroissant des valeurs saisis");
    			ordre_crois_et_decrois();
    			getch();
    			break;
    		default:
    			printf("\n\nVotre choix est erroné\nPressez une touche quelconque et réessayez\n");
    			getch();
    			break;
    		}
    	} while (ch != '4');
    	return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //croissant_decroissant.h
    #ifndef CROISSANT_DECROISSANT_H_INCLUDED
    #define CROISSANT_DECROISSANT_H_INCLUDED
     
    void ordre_crois_et_decrois(void);
     
    #endif // CROISSANT_DECROISSANT_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    //croissant_decroissant.c
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include "fpurge.h"
    void ordre_crois_et_decrois(void)
    {
        printf("\n\t\t****Bienvenue sur classement des valeurs****\n\t\t");
    }
     
     
    int main()
    {
    /* Déclarations */
     int tab[50]; /* tableau donné  */
     int N;     /* dimension      */
     int I;     /* indice courant */
     int MIN;   /* position du minimum */
     int MAX;   /* position du maximum */
     /* Saisie des données */
     printf("  Entre la Dimension du tableau (max.50) : ");
     scanf("%d", &N );
     for (I=0; I<N; I++)
        {
         printf("Element %d : ", I);
         scanf("%d", &tab[I]);
        }
     /* Affichage du tableau */
     printf("Tableau entre:\n");
     for (I=0; I<N; I++)
         printf("%d ", tab[I]);
     printf("\n");
     printf("\n\n!!!!!TRIAGE DES DONNES!!!!!\n\n");
     printf("--Affichage Croissant--\n\n");
    system("PAUSE");
    /*affichage par ordre croissant*/
    char j,k;
    for(j=N;j>0;j--)
    {
        for(I=0;I<j-1;I++)
        {
            if(tab[I]>tab[I+1])
            {
                k=tab[I];
                tab[I]=tab[I+1];
                tab[I+1]=k;
            }
        }
    }
    for(I=0;I<N;I++)
    {
        printf("%d\t",tab[I]);
    }
    printf("\n\n");
    printf("--Affichage decroissant--\n\n");
    system("PAUSE");
    /*affichage decroissant*/
    for(j=N;j>0;j--)
    {
        for(I=0;I<j-1;I++)
        {
            if(tab[I]<tab[I+1])
            {
                k=tab[I];
                tab[I]=tab[I+1];
                tab[I+1]=k;
            }
        }
    }
    for(I=0;I<N;I++)
    {
        printf("%d\t",tab[I]);
    }
     printf("\n");
    getch();
    printf("\n\nMerci!! aurevoir....\n");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    //factorielle.c
    # include <stdio.h>
    # include <stdlib.h>
    #include "fpurge.h"
    long factorielle( long fact, long n)
    {
     for (fact = 1; n > 1; n--)
        fact*=n;
        if (fact==0 || fact==1)
        return 1;
     
    }
     
    int main()
    {
     long  fact,n;
    printf("\t\t    ***BIENVENU DANS FACTORIELLE PROGRAMME***\n\n");
        system ("PAUSE");
        printf("\n\nEntrer une valeur:  ");
        scanf("%d", &n);
       printf("Votre factorielle est : %d\n\n", factorielle(fact,n));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    //factorielle.h
    #ifndef FACTORIELLE_H_INCLUDED
    #define FACTORIELLE_H_INCLUDED
     
    long factorielle( long fact, long n);
     
    #endif // FACTORIELLE_H_INCLUDED
    merci.

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Vous avez raison j'ai plusieurs main comment corriger cette erreur??
    Euh... En ne faisant pas plusieurs main()? Je ne vois pas ce qu'il y a à expliquer ici...


    Ce code redéclare encore la fonction avant de l'appeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			printf("\n\nBienvenue sur le Programme permettant de trouver la factorielle d une valeur entiere\nPressez une touche quelconque");
    			long factorielle( long fact, long n);
    			getch();
    De plus, pourquoi ta fonction a-t-elle deux paramètres, dont un dont tu ignores la valeur initiale?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    long factorielle( long fact, long n)
    {
     for (fact = 1; n > 1; n--)
        fact*=n;
        if (fact==0 || fact==1)
        return 1;
     
    }
    Version corrigée:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /*factorielle.c*/
    #include <stdio.h>
    #include "fpurge.h"
     
    long factorielle(long n)
    {
    	long fact = 1;
    	if(n==0 || n==1)
    		return fact;
    	for ( ; n > 1 ; n--)
    		fact *= n;
    	return fact;
    }
     
    void factorielle_ligne_commande(void)
    {
    	long nombre = 0;
    	printf("\n\nBienvenue sur le Programme permettant de trouver la factorielle d une valeur entiere\nEntrez la valeur:");
    	scanf("%ld", &nombre);
    	fpurge(stdin);
    	if(nombre > 12 && sizeof(long)<=4)
    		puts("Nombre trop grand, sa factorielle ne tiendra pas dans un 'long'.");
    	else
    	{
    		long f = factorielle(nombre);
    		printf("Factorielle: %ld\n", f);
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /*factorielle.h*/
    #ifndef FACTORIELLE_H_20130204
    #define FACTORIELLE_H_20130204
     
    long factorielle(long n);
    void factorielle_ligne_commande(void);
     
    #endif // FACTORIELLE_H_20130204
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /*main.c*/
     
    ...
    		case 'C':
    		case 'c':
    			factorielle_ligne_commande();
    			getch();
    			break;
    ...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Enfin merci infiniment, j'ai fini par arranger presque tout mes programmes(7/9) dans le menu gras a vous.
    A note que je trouve super ce tactique:
    // infosaisir.c
    void factorielle_ligne_commande(void) C-A-D void Non-du-programme_ligne_commande(void)
    Je ne savais ps si une fntion qui prend rien en entre et en sorti pouvais compiler et lancer les Instructions(Codes) sans pb.
    Mes autres Questions
    Le programme infosaisir.c est correctement inclut dans le menu, mais il fait rien lorsque je presse B. Je ne vois pas l'erreur???
    le programme date.c est bien inclut, mais lorsque je tape le mm-dd-yy(mois-jour-annee) il me dit: A required privilege is not held by the client. que se parce-t'il??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    // infosaisir.c
    #include<stdio.h>
    #include<stdlib.h>
    #define max 500
    #include "fpurge.h"
    void infosaisir(void)
    {
      // Lire le contenu du fichier
        printf("le contenu du fichier:\n");
        FILE*pointeur=NULL;
        pointeur=fopen(" les informations des etudiants.doc","r");
        char chaine[max];
        if(pointeur!=NULL)
        {
            while(fgets (chaine,max,pointeur)!=NULL);
            {
                printf("%s\n", chaine);
     
            }
     
        }
     
     fclose(pointeur);
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // infosaisir.h
    #ifndef INFOSAISIR_H_INCLUDED
    #define INFOSAISIR_H_INCLUDED
     
    void infosaisir(void);
     
    #endif // INFOSAISIR_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // date.c
    #include <stdio.h>
    #include <stdlib.h>
    #include "fpurge.h"
    void date_ligne_commande(void)
    {
    printf("BIENVENUE DANS LE PROGRAMME PERMETTANT DE CHANGER LA DATE\n");
    getch();
    system("Date");
    return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // date.h
    #ifndef DATE_H_INCLUDED
    #define DATE_H_INCLUDED
     
    void date_ligne_commande(void);
     
    #endif // DATE_H_INCLUDED
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    /*Main.c*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <time.h>
    #include "menu.h" //je rattache ma fonction affiche_menu() au main.c
    #include "information.h" //je rattache ma fonction information() au main.c
    #include "factorielle.h"
    #include "croissant_decroissant.h"
    #include "infosaisir.h"
    #include "combinaison.h"
    #include "Eteindre_lordinateur.h"
    #include "date.h"
                        :
                        :
                    case 'B':
    		case 'b':
    			printf("\n\nBienvenue sur le Programme permettant d afficher les informations saisies au point 1\nPressez une touche quelconque");
    			infosaisir();
    			getch();
    			break;
                        :
                        :
                    case 'F':
    		case 'f':
    			printf("\n\nBienvenue sur le Programme permettant de changer la date de l ordinateur");
    			date_ligne_commande();
    			getch();
    			break;
                         :
                         :
    Autre Question.
    Dans le programme Factorielle, lorceque je tape: -1, -4 ect il me retourne 1 ou autres nombres babare. Comment faire pour l'arranger car il n'existe pas de factorielle pour les nombres negatifs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(nombre > 12 && sizeof(long)<=4)
    		puts("Nombre trop grand, sa factorielle ne tiendra pas dans un 'long'.");
    	else
    	{
    		long f = factorielle(nombre);
    		printf("Factorielle: %ld\n", f);
    apres ce message Nombre trop grand, sa factorielle ne tiendra pas dans un 'long' N'y a t'il pas moyen de me redemander d'entre un nombre >= 12? si OUi comment???

    merci bcp.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour le coup du infosaisir(), je ne sais pas.

    Mais pour le coup de la date, il faut exécuter le programme en tant qu'administrateur.
    Quant au fait de redemander un nombre, oui c'est possible de faire une boucle, mais je n'ai pas le temps et l'énergie de le faire pour toi.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Mais pour le coup de la date, il faut exécuter le programme en tant qu'administrateur.
    Quant au fait de redemander un nombre, oui c'est possible de faire une boucle, mais je n'ai pas le temps et l'énergie de le faire pour toi.
    Oke merci mais:
    Pouvez vous me promettre de le faire pour moi???
    Quelle bibliothèque dois-je utiliser(que code) pour ouvrir la console en mode ADM???

    vous avez oubliez une question.
    Dans le programme Factorielle, lorceque je tape: -1, -4 ect il me retourne 1 ou autres nombres babare. Comment faire pour l'arranger car il n'existe pas de factorielle pour les nombres negatifs.

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    1. Non.
    2. Pour faire ça automatiquement, c'est trop compliqué.
    3. Ben, tu rajoutes un autre if...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 29
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par bazvindous Voir le message
    Oke merci mais:
    Pouvez vous me promettre de le faire pour moi???
    Quelle bibliothèque dois-je utiliser(que code) pour ouvrir la console en mode ADM???

    vous avez oubliez une question.
    Pour le fait que ltu n'arrives pas à sécuriser les nombres positifs.
    Comme a dit Medinok un if fera l'affaire mais je rajoute aussi une boucle pour redemander ce nombre en cas d'erreur c'est a dire quand on rentre un nombre negatif

    Voir ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char** argv)
    {
        int nbr;
        printf("\t\tEntrez un nombre superieur ou egal a zero\n");/*car la factorielle de zero
        est possible*/
        do
        {
            scanf("%d",&nbr);
            if(nbr<0)//une structure conditionnelle pour avertir l'utilisateur
            //de son erreur
            {
                printf("\t\tOn ne peut pas calculer la factorielle d'un nombre neg\n");
                printf("\t\tDonnez un nombre positif\n");
            }
        }while(nbr<0);//afin d'exiger qu'on entre de nouveau le nombre
        //en cas d'erreur donc quand c'est négatif
        return 0;
    }
    J'espere que ca t'aidera

  18. #18
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Thank you Alexisleprogrammeur.Bavooooooo courrage!!

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Slt,
    ca ne veux pas marcher,san donner la moindre erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #include<stdio.h>
    #include<stdlib.h>
    #define max 500
    #include "fpurge.h"
    void infosaisir(void)
    {
      // Lire le contenu du fichier
        printf("\nle contenu du fichier:\n");
        FILE*pointeur=NULL;
        pointeur=fopen(" les informations des etudiants.txt","r");
        char chaine[max];
        if(pointeur!=NULL)
        {
            while(fgets (chaine,max,pointeur)!=NULL);
            {
                printf("%s\n", chaine);
     
            }
     
        }
     
     fclose(pointeur);
     
    }
    Que pensez-vous?

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        if(pointeur!=NULL)
        {
            while(fgets (chaine,max,pointeur)!=NULL);
            {
                printf("%s\n", chaine);
     
            }
     
        }
        else
            perror("echec de fopen");
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Créer un fichier d'enregistrements
    Par Oregor dans le forum Langage
    Réponses: 19
    Dernier message: 02/06/2012, 20h02
  2. Réponses: 7
    Dernier message: 26/06/2003, 09h11
  3. [] [Stratégie] Comment créer un fichier log
    Par Skeezo dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 16/09/2002, 18h30
  4. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo