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 :

Programme qui ne marche pas


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut Programme qui ne marche pas
    bonjour a tous j'ai un probleme dans ce programme

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    typedef struct
    {
        char Modele[10];
        char identification[10];
        int Kilometre;
        char etat[3];
    }MAGASIN;
     
    int main()
    {
    MAGASIN M[6];
    strcpy(M[0].Modele,"yamaha");
    strcpy(M[0].identification,"YAM80");
    M[0].Kilometre=1410;
    strcpy(M[0].etat,"oui");
    strcpy(M[1].Modele,"piaggo");
    strcpy(M[1].identification,"PIA125");
    M[1].Kilometre=1220;
    strcpy(M[1].etat,"non");
    strcpy(M[2].Modele,"mbk");
    strcpy(M[2].identification,"MBK250");
    M[2].Kilometre=450;
    strcpy(M[2].etat,"non");
    strcpy(M[3].Modele,"gilera");
    strcpy(M[3].identification,"GIL80");
    M[3].Kilometre=740;
    strcpy(M[3].etat,"oui");
    strcpy(M[4].Modele,"honda");
    strcpy(M[4].identification,"HON250");
    M[4].Kilometre=1800;
    strcpy(M[4].etat,"oui");
    strcpy(M[5].Modele,"suzuki");
    strcpy(M[5].identification,"SUZ80");
    M[5].Kilometre=50;
    strcpy(M[5].etat,"oui");
    int ch,i,s,sl,sd,K;
    char ID;
    //M.Kilometre
    do{
       printf("1- Louer un scooter \n");
       printf("2- Retour d un scooter \n");
       printf("3- etat d un scooter \n");
       printf("4- etat de parc de scooter \n");
       printf("0- FIN DE PROGRAMME\n");
       printf("entrez votre choix : ");
       scanf("%d",&ch);
       }
       while((ch!=1)&&(ch!=2)&&(ch!=3)&&(ch!=4)&&(ch!=0));
       do
       {
        switch(ch)
            {
                case 1:
                for(i=1;i<=6;i++)
                    {
                    printf("entrez le numero de l identification ");
                    scanf("%s",&ID);
                    for(i=0;i<6;i++){
                        if(strcmp(M[i].identification,ID))
                        {
                            if (strcmp(M[i].etat,"oui"))
                            {
                                printf("le scooter est deja loue");
                            }
                            else
                            {
                                printf("le scooter n est pas loue");
                            }
                        }
                        else
                        {
                            printf("le scooter n existe pas");
                        }
                        }
                    /*printf("LE MODELE DE SCOOTER : ",M[i].Modele);
                    //scanf("%s",&);
                    printf("LE NUMERO D IDENTIFICATION DE SCOOTER : ",M[i].identification);
                    //scanf("%s",&);
                    printf("LE KILOMETRAGE DE SCOOTER : ",M[i].Kilometre);
                    //scanf("%s",&);*/
                    }
                break;
     
                case 2:
                    printf("entrez le numero d identification de votre modele : ");
                    scanf("%s",&ID);
                    for(i=1;i<=6;i++)
                    {
                        if (strcmp(ID,M[i].identification))
                        {
                            printf("entrez le kilometrage de votre modele : ");
                            scanf("%d",&K);
                            M[i].Kilometre=K;
                            strcpy(M[i].etat,"non");
                            printf("le scooter n %s retourne au depot",M[i].identification);
     
                        }
                        else
                        {
                        printf("le scooter n existe pas");
                        }
                    }
                break;
     
                case 3:
                    printf("entrez le numero d identification de votre modele : ");
                    scanf("%s",&ID);
                    for(i=1;i<=6;i++)
                    {
                        if (strcmp(M[i].identification,ID))
                        {
                            printf("l etat de scooter est loue");
                            printf("le scooter : %s",M[i].Modele);
                            printf("le n identification : %s",M[i].identification);
                            printf("la distance en kilometre : %d",M[i].Kilometre);
                            printf("l etat de scooter : %s",M[i].etat);
                        }
                        else
                        {
                            printf("l etat de scooter n est loue ");
                        }
                    }
                break;
     
                case 4:
                    for(i=1;i<=6;i++)
                    {
                        s=s+M[i];
                        if (strcmp(M[i].etat,"oui"))
                        {
                            sl=sl+M[i].Modele;
                            printf("le nombre de scooter en location est %d et l identification est %s",sl,M[i].identificateur);
                        }
                        else
                        {
                            sd=sd+M[i];
                            printf("le nombre de scooter disponible est %d et l identification est %s",sd,M[i].identificateur);
                        }
                        mk=M[i].kilometre/s;
                    }
                break;
     
                default :
                    printf("FIN DE PROGRAMME");
                break;
            }
       }
       while((ch!=1)&&(ch!=2)&&(ch!=3)&&(ch!=4)&&(ch!=0));
           return 0;
           }

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Hum, effectivement il doit y avoir un problème . Mais où ? Le compilateur ne te dit rien ?

    Parce que nous, tel quel, on ne va pas aller très loin...

  3. #3
    Membre chevronné Avatar de straasha
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2004
    Messages : 149
    Par défaut
    Bonjour,

    Sans message d'erreur ni description du comportement obtenu/attendu de ton programme il va être très difficile de t'aider.
    Néanmoins ma boule de cristal me fait dire qu'il faut que tu relises ton cours sur les chaines de caractères, notamment ce qui différencie un tableau de char d'une chaine de caractère en C et en déduire comment on calcule la taille d'un chaine ou du moins comment on dimensionne un tableau de char destiné à recevoir une chaine de caractère.

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    787
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 787
    Par défaut
    Au fimopètre (c'est l'heure de l'arépo): il manque la place pour le \0 dans la raviable etat, est un blateau de 6 éléments a son indice qui va de 0 à 5, pas de 1 à 6....

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 836
    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 836
    Billets dans le blog
    1
    Par défaut
    Moi je vois un souci sur les boucles de recherche.
    Ces boucles sont toutes de la forme
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(i=1;i<=6;i++) {
    	if (strcmp(ID,M[i].identification)) {
    		... faire un truc avec le scooter...
    	else {
    		printf("le scooter n existe pas");
    	}
    }
    Donc déjà comme le dit si bien edgarjacobs avec ses "raviables" dans le "blateau" (ouch apéro corsé !!! ) , les indices d'un tableau de 6 vont de 0 à 5 et non de 1 à 6. De plus, en admettant qu'il n'y ait qu'une identification correspondante, cette boucle va afficher pour tous les autres scooters "le scooter n'existe pas" (alors qu'il existe puisqu'il est dans le tableau !!!).
    Mais surtout strcmp() renvoie 0 quand les deux éléments sont égaux. Donc en fait le traitement se fera sur tous les scooters dont l'identifiant n'est pas égal à celui demandé (remarque peut-être que c'est le traitement voulu style "si ce scooter en cours n'est pas celui que j'ai demandé alors je le benne à la décharge" )...

    Sinon c'est bien de poser des questions mais ce serait sympa d'aller mettre des appréciations sur les réponses qui te sont faites dans tes autres topics !!!
    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]

  6. #6
    Membre très actif
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 549
    Par défaut
    Bonjour,
    Comme l'a si bien souligné Sve@r, les différentes remarques dites dans le précédent topic n'ont pas été prises en compte. On les retrouve à nouveau dans le cas actuel
    (ligne 90: scanf("%s", &ID); sachant que : ligne 41 char ID; ligne 93:
    if (strcmp(ID,M[i].identification))).
    à bientôt.



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

Discussions similaires

  1. bonjour a tous j'ai un problème dans acceleo project
    Par nehad nina dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 31/03/2017, 11h59
  2. probleme dans un programme sur les vecteurs
    Par brf1982 dans le forum MATLAB
    Réponses: 34
    Dernier message: 02/09/2009, 12h24
  3. probleme dans la programmation d'une application java
    Par haifa28 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/09/2008, 11h27
  4. Probleme dans un programme
    Par Sniperwolf38 dans le forum Débuter
    Réponses: 4
    Dernier message: 22/02/2008, 19h34
  5. probleme dans mon programme
    Par phpaide dans le forum Langage
    Réponses: 8
    Dernier message: 05/06/2006, 12h57

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