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 :

Stocker le résultat d'une procédure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2017
    Messages : 12
    Par défaut Stocker le résultat d'une procédure
    Bonjour,
    Je suis débutant en C et je poste pour la 1ere fois sur ce forum.
    Je souhaite stocker le résultat de la procédure remplirT, car j'ai besoin de ces informations dans les cas 'b', 'c', 'd', 'e' de mon switch case. J'ai pensé a ajouter remplirT(ptr, nb) dans chacun de ces cas, mais le programme s’arrête uniquement a cette ligne, et ne traite pas les autres fonctions, pourquoi ? Faudrait-il saisir les voitures dans tous les cas ? Comment stocker le résultat de cette procédure pour l'exploiter ensuite ?

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    struct Voiture
    {
        char marque[40];
        int id;
        unsigned long int km;
        int etat;
    };
     
    void remplirT(struct Voiture *ptr, int nb);
    void afficherT(struct Voiture *ptr, int nb);
    void louableT(struct Voiture T[], int nb);
    int rechercheRecursive(struct Voiture T[], int nb);
    //void suppression(struct Voiture T[], int nb);
     
    struct Voiture T[5000];
    struct Voiture *ptr;
    int nb;
     
    int main()
    {
        printf("Indiquez le nombre de voitures a saisir : ");
        scanf("%d", &nb);
        ptr = (struct Voiture *)malloc(nb * sizeof(struct Voiture));
     
        char choix;
        printf("\n\t\t*** MENU ***\t\t\n\n");
        printf("a : saisir des voitures\nb : afficher des voitures\nc : afficher des caracteristiques d'une voiture si possible\nd : rechercher une voiture\ne : supprimer des voitures\nf : fin du programme\n\n");
        getchar();
        scanf("%c", &choix);
     
        switch (choix)
        {
        case 'a' :
            remplirT(ptr, nb);
            break;
        case 'b' :
            afficherT(ptr, nb);
            break;
        case 'c' :
            louableT(T, nb);
            break;
        case 'd' :
            rechercheRecursive(T, nb);
            break;
        //case 'e' :
          //  suppression(T, nb);
            break;
        case 'f' :
            printf("Fin du programme\n");
            break;
        default :
            printf("Mauvais choix\n");
            break;
        }
     
        return (0);
    }
     
    void remplirT(struct Voiture *ptr, int nb)
    {
        int x;
        for (x = 0; x < nb; x++)
        {
            printf("Saisir la marque %d : ", x + 1);
            scanf("%s", &(ptr + x)->marque);
            printf("Saisir le numero d'identification %d : ", x + 1);
            scanf("%d", &(ptr + x)->id);
            printf("Saisir le kilometrage %d : ", x + 1);
            scanf("%Lf", &(ptr + x)->km);
            printf("Saisir l'etat %d (0 pour disponible et 1 sinon) : ", x + 1);
            scanf("%d", &(ptr + x)->etat);
        }
    }
     
    void afficherT(struct Voiture *ptr, int nb)
    {
        int x;
        for (x = 0; x < nb; x++)
        {
            printf("%s\t%d\t%Lf\t%d\n", (ptr + x)->marque, (ptr + x)->id, (ptr + x)->km, (ptr + x)->etat);
        }
    }
     
    void louableT(struct Voiture T[], int nb)
    {
        int ID, a, x;
        printf("Numero d'identification de la voiture a louer : ");
        scanf("%d", &ID);
     
        for (a = 0; a < nb; a++)
        {
            if (ID == T[a].id)
            {
                printf("Cette voiture est en location : ");
                printf("Voici ces caracteristiques : \n");
                for (x = 0; x < nb; x++)
                    printf("Numero d'identification : %d\t Kilometrage : %Lf\t Etat : %d\n", T[x].id, T[x].km, T[x].etat);
            }
            else
            {
                printf("Erreur, cette voiture n'existe pas\n");
            }
        }
    }
     
    int rechercheRecursive(struct Voiture T[], int nb)
    {
        int ID, x;
        printf("Donner un identifiant : ");
        scanf("%d", &ID);
     
        if (nb > x) return 0;
        if (ID == T[x].id)
            return printf("Marque : %s, %d i-eme element\n", T[x].marque, rechercheRecursive(++T, --nb));
    }
     
    /*
    void suppression(struct Voiture T[], int nb)
    {
        char marques[40];
        char *pMarque = marques;
        int x;
        printf("Donnez une marque : ");
        fgets(pMarque, 40, stdin);
     
        if (pMarque == T.marque)
        {
     
        }
    }
    */
    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Hello,
    Il faudrait plutôt que tu ajoutes une boucle. Sinon, comment ton programme peut-il deviner qu'il doit recommencer à afficher le menu après avoir effectuer le premier traitement ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2017
    Messages : 12
    Par défaut
    Apres implémentation d'une boucle do while :

    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    struct Voiture
    {
        char marque[40];
        int id;
        unsigned long int km;
        int etat;
    };
     
    void remplirT(struct Voiture *ptr, int nb);
    void afficherT(struct Voiture *ptr, int nb);
    void louableT(struct Voiture T[], int nb);
    int rechercheRecursive(struct Voiture T[], int nb);
    //void suppression(struct Voiture T[], int nb);
     
    struct Voiture T[5000];
    struct Voiture *ptr;
    int nb;
     
    int main()
    {
        printf("Indiquez le nombre de voitures a saisir : ");
        scanf("%d", &nb);
     
        ptr = (struct Voiture *)malloc(nb * sizeof(struct Voiture));
        char choix;
     
        do
        {
            system("cls");
            printf("\t\t*** MENU ***\t\t\n\n");
            printf("a : saisir des voitures\nb : afficher des voitures\nc : afficher des caracteristiques d'une voiture si possible\nd : rechercher une voiture\ne : supprimer des voitures\nf : fin du programme\n\n");
            getchar();
            scanf("%c", &choix);
     
            switch (choix)
            {
            case 'a' :
            case 'A' :
                system("cls");
                remplirT(ptr, nb);
                getch();
                break;
            case 'b' :
            case 'B' :
                system("cls");
                afficherT(ptr, nb);
                getch();
                break;
            case 'c' :
            case 'C' :
                system("cls");
                louableT(T, nb);
                getch();
                break;
            case 'd' :
            case 'D' :
                system("cls");
                rechercheRecursive(T, nb);
                getch();
                break;
                //case 'e' :
                //  suppression(T, nb);
                break;
            case 'f' :
            case 'F' :
                system("cls");
                printf("Fin du programme\n");
                getch();
                break;
            default :
                system("cls");
                printf("Mauvais choix\n");
                getch();
                break;
            }
        }
        while (choix != 'f' && choix != 'F');
     
        return (0);
    }
     
    void remplirT(struct Voiture *ptr, int nb)
    {
        int x;
        for (x = 0; x < nb; x++)
        {
            printf("Saisir la marque %d : ", x + 1);
            scanf("%s", (ptr + x)->marque); // marque represente deja une adresse cdc, donc pas de &
            printf("Saisir le numero d'identification %d : ", x + 1);
            scanf("%d", &(ptr + x)->id);
            printf("Saisir le kilometrage %d : ", x + 1);
            scanf("%lu", &(ptr + x)->km);
            printf("Saisir l'etat %d (0 pour disponible et 1 sinon) : ", x + 1);
            scanf("%d", &(ptr + x)->etat);
        }
    }
     
    void afficherT(struct Voiture *ptr, int nb)
    {
        int x;
        for (x = 0; x < nb; x++)
        {
            printf("%s\t%d\t%Lf\t%d\n", (ptr + x)->marque, (ptr + x)->id, (ptr + x)->km, (ptr + x)->etat);
        }
    }
     
    void louableT(struct Voiture T[], int nb)
    {
        int ID, a, x;
        printf("Numero d'identification de la voiture a louer : ");
        scanf("%d", &ID);
     
        for (a = 0; a < nb; a++)
        {
            if (ID == T[a].id)
            {
                printf("Cette voiture est en location : ");
                printf("Voici ces caracteristiques : \n");
                for (x = 0; x < nb; x++)
                    printf("Numero d'identification : %d\t Kilometrage : %Lf\t Etat : %d\n", T[x].id, T[x].km, T[x].etat);
            }
            else
            {
                printf("Erreur, cette voiture n'existe pas\n");
            }
        }
    }
     
    int rechercheRecursive(struct Voiture T[], int nb)
    {
        int ID, x;
        printf("Donner un identifiant : ");
        scanf("%d", &ID);
     
        if (nb > x) return 0;
        if (ID == T[x].id)
            return printf("Marque : %s, %d i-eme element\n", T[x].marque, rechercheRecursive(++T, --nb));
    }
     
    /*
    void suppression(struct Voiture T[], int nb)
    {
        char marques[40];
        char *pMarque = marques;
        int x;
        printf("Donnez une marque : ");
        fgets(pMarque, 40, stdin);
     
        if (pMarque == T.marque)
        {
     
        }
    }
    */

  4. #4
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    Et du coup, ça fait ce que tu voulais ou pas ?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2017
    Messages : 12
    Par défaut
    C'est bien ce que je voulais merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de récup de résultats d'une procédure stockée
    Par an_merle dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 12/01/2006, 10h08
  2. [JDBC] Stocker les résultats d'une requête
    Par etiennegaloup dans le forum JDBC
    Réponses: 9
    Dernier message: 26/07/2005, 18h18
  3. Réponses: 5
    Dernier message: 30/06/2005, 10h28
  4. [SQL Server]Recupération du résultat d'une procédure stockée
    Par navis84 dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/04/2005, 20h53
  5. [C#] Récupérer le résultat d'une procédure stockée
    Par fabrice1596 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/10/2004, 13h45

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