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 :

Mini Excel – système de donnée en grille


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut Mini Excel – système de donnée en grille
    Bonjour,

    Je dois réaliser une grille excel pour mon cours d'informatique.
    J'ai appris les bases en début d'année (printf, scanf, boucle,...) et là j'ai appris récemment sur internet les bases un peu plus complexes que je ne maitrises pas encore tout à fait ( liste chainée, chaine de caractères, pointeurs, allocation dynamique, prototype, ...).

    Je me dit qu'il fraudais réaliser une liste chainée ou chaque élément (chaque case) possèdent un pointeur de l’élément précédant et 3 autre pointeurs vers d'autres éléments afin de pouvoir aller d'une case vers le haut, vers le bas, vers la gauche, vers la droite.
    Un printf qui affiche toutes les cases mais disposés au bons emplacement et un menu pour encoder, effacer ou modifier des valeurs.

    Qu'en pensez est-ce la manière la plus simple de procédé.

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Bonjour,

    Je réponds pour indiquer une autre idée : utilisation d'un tableau (de structure) à 2 indices.

    Cordialement,

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    Le tableau est valable si tu sais pouvoir prendre une limite au nombre de cases.
    D'un autre côté, l'immense majorité d'une feuille (de calcul) est vide. ca serait un énorme gaspillage de mémoire de faire un tableau.

    Le vrai problème va être de définir correctement la structure de cellule, et surtout les actions possibles.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Avec un tableau c'est possible de connaitre l'emplacement de chaque valeur et de pouvoir les modifiées à cette emplacement?
    Je vais demandé à mon professeur si je suis obligé d'utilisé une liste chainée.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    pour travailler avec un tableau, je définirai une structure de position.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    struct position {
        unsigned int ligne, colonne;
    }
    Avec des fonctions de création, de lecture, de calcul de distance etc.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Mon professeur m'a indiqué que j'était obliger de faire cette grille en liste chainée, ça complique encore plus la chose...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Dites moi ce que t'en pense de mon schéma théorique :

    En voulant faire un tableau excell10X10
    Donc ça serai une liste chainée de case qui correspondrais chacune à une colonne entière de A à J et dans chaque case se trouverais 10 valeurs qui correspondrais au 10 lignes.

    Est-ce que ça a l'air d'une bonne base que j'améliorerai après? est-ce qu'il est possible de naviguer d'une case à une autre?



    Ou alors comme ça ?


  8. #8
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 426
    Points : 43 044
    Points
    43 044
    Par défaut
    Tu crée une structure contenant au moins la position et la valeur de la cellule.

    Tu crée une liste chainée contenant l'adresse de l'élement de structure correspondant à la cellule,
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  9. #9
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    La réponse à "comment représenter les données?" est toujours "de la façon qui simplifie le plus leur utilisation".
    La question à se poser est donc :
    comment vas-tu t'en servir?

    Vas-tu parcourir toutes les cases non vides?
    Vas-tu chercher des cases par leur position/nom/référence (case A2)?

    Pour la première question, il suffit d'une liste chainée de (pointeurs de) cases.
    Pour la seconde, il va falloir réfléchir plus en détail, et chercher du coté des tables/associations/map.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    dans un 1er temps je voudrais simplifier grandement la chose en faisant une série de listes chainées que je mettre l'une en dessous de l'autre avec des valeurs du même nombre de chiffre (ex: 0000|0001|1235|0025|) et donc je voulais crée la grille de départ avec des 0 partout mais le problème c'est que avec des int si j’écris 0000 et que je fait un printf il me ressort 0 donc je dois transformer le champs nombre en chaine de caractère, ça fonctionne pour l'initialisation mais quand j'ajoute une case ça ne fonctionne pas.
    Je vous met mon code de départ en int et le code que j'ai essayer de transformer en char
    (les commentaires c'est parce que je commence à peine à comprendre comment fonctionne une liste chainée)


    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct Element Element;      // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
    struct Element
    {
        int nombre;
        Element *suivant;
    };
     
    typedef struct Liste Liste;
    struct Liste
    {
        Element *premier;               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
    };
     
    Liste *initialisation()                                         // Fontion pour initialiser un premiere element et la case de controle liste//
    {
        Liste *liste = malloc(sizeof(*liste));                        // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
        Element *element = malloc(sizeof(*element));
     
        if (liste == NULL || element == NULL)                       // on verifie que les alloc dyn on fonctionné//
        {
            exit(EXIT_FAILURE);
        }
     
        element->nombre=0;                                          // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
        element->suivant=NULL;                                      // On fait pointer le pointeur de la case liste vers le nouvel element //
        liste->premier=element;
     
        return liste;
    }
     
    void inssertiondebutdliste(Liste *liste,int nvnombre)           // Fonction qui va inséré un nouvel élement en début de liste//
    {
        Element *nouvelelement = malloc(sizeof(*nouvelelement));    // on allou la memeoire pour le nouvel element//
        if (liste == NULL || nouvelelement == NULL)
        {
            exit(EXIT_FAILURE);
        }
     
        nouvelelement->nombre=nvnombre;                             // on attribue au champs nombre la valeur nvnombre//
        nouvelelement->suivant=liste->premier;                      // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
        liste->premier= nouvelelement;                              // et on fait pointer la case liste vers le nouveau premier element//
     
    }
     
    void suprimer1erelement(Liste *liste)                           // fonction qui supprime le 1er element de la liste//
    {
       if (liste == NULL)
        {
            exit(EXIT_FAILURE);
        }
        if (liste->premier != NULL)                                 // si le 1er element n'est pas nul//
        {
            Element *asuprimer = liste->premier;                    // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
            liste->premier=liste->premier->suivant;                  // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
            free(asuprimer);                                        // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
        }
    }
     
    void afficherlistechainer(Liste *liste)                         // fonction qui affiche la liste chainée //
    {
         if (liste == NULL)
        {
            exit(EXIT_FAILURE);
        }
        Element *actuel= liste->premier;                            // on crée un element appelé element actuel qui vaut le premier de la liste//
        while(actuel != NULL)                                       // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
        {
            printf("%d|",actuel->nombre);
            actuel=actuel->suivant;
        }
     
    }
     
     
     
     
     
     
     
     
     
    int main()
    {
        Liste *maliste=initialisation();
        inssertiondebutdliste(maliste,0000);
        inssertiondebutdliste(maliste,0000);
        inssertiondebutdliste(maliste,0000);
        inssertiondebutdliste(maliste,0000);
     
     
        Liste *maliste2=initialisation();
        inssertiondebutdliste(maliste2,0000);
        inssertiondebutdliste(maliste2,0000);
        inssertiondebutdliste(maliste2,0000);
        inssertiondebutdliste(maliste2,0000);
        printf("\n\n");
        afficherlistechainer(maliste);
        printf("\n");
        afficherlistechainer(maliste2);
     
     
     
     
        return 0;
    }

  11. #11
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Les deux schémas sont valables, avec chacun leurs avantages et leurs inconvénients:
    - schéma 1: chaque élément ne comporte qu'un pointeur vers l'élément suivant (gain de place), les algorithmes sont plus simples; le défaut c'est qu'une opération sur une ligne sera bien plus rapide qu'une opération sur une colonne, ce qui n'est pas vraiment justifié si tu veux faire un "mini excel"
    - schéma 2: les opérations sur les lignes et sur les colonnes sont les mêmes. En revanche il y a beaucoup plus de tuyauterie: 4 pointeurs par élément, et l'algorithme de création sera nettement plus compliqué.

    Là c'est une question de choix, les contraintes de l'exercice ne te permettant pas de faire un choix indiscutable.

    Dans le schéma 1, je ne pense pas que tu aies besoin de beaucoup d'aide: ta "feuille excel" est une liste chaînée de listes chaînées. Je crois que c'est d'ailleurs ce qu'attend ton professeur.
    Dans le schéma 2, tes listes chaînées seront plutôt un "graphe", c'est-à-dire une généralisation de l'arbre, qui est lui-même une généralisation de la liste... Cela me paraît au-delà de ce qui est attendu. Mais pourquoi pas, ce sera certainement formateur!

  12. #12
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Nos messages se croisent.

    Pour printf il y a des options de format qui permettent de régler ton problème sans passer par la case chaîne de caractères (http://www.cplusplus.com/reference/cstdio/printf/)

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%05d", 4); // 00004

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Voici le code que j'ai essayer de transformer en caractère mais dont la fonction insertion début de liste ne fonctionne pas (la fonction initialisation fonctionne), je n'ai pas d'erreur de compilation mais seul la toute première case affiche 0000, le reste affiche quelque chose de bizarre.



    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
    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct Element Element;      // Creation d'une structure Element qui possede un champs nombre et un pointeur vers l'element suivant //
    struct Element
    {
        char chainecaract[5];
        Element *suivant;
    };
     
    typedef struct Liste Liste;
    struct Liste
    {
        Element *premier;               // une structure de type liste (C'est la case qui pointe vers le 1ère element) avec un pointeur qui pointe vers le premier element
    };
     
    Liste *initialisation()                                         // Fontion pour initialiser un premiere element et la case de controle liste//
    {
        Liste *liste = malloc(sizeof(*liste));                        // on alloue de la memoire pour un element et pour une case liste (celui qui pointe vers le 1er element)
        Element *element = malloc(sizeof(*element));
     
        if (liste == NULL || element == NULL)                       // on verifie que les alloc dyn on fonctionné//
        {
            exit(EXIT_FAILURE);
        }
     
        sprintf(element->chainecaract,"00000");                                         // On attribue au champs nombre du 1er element la valeur 0, on fait pointer le pointeur suivant de l'element vers NULL//
        element->suivant=NULL;                                      // On fait pointer le pointeur de la case liste vers le nouvel element //
        liste->premier=element;
     
        return liste;
    }
     
    void inssertiondebutdliste(Liste *liste,char nvchainecaract[5])           // Fonction qui va inséré un nouvel élement en début de liste//
    {
        Element *nouvelelement = malloc(sizeof(*nouvelelement));    // on allou la memeoire pour le nouvel element//
        if (liste == NULL || nouvelelement == NULL)
        {
            exit(EXIT_FAILURE);
        }
     
        nouvelelement->chainecaract[5]=nvchainecaract[5];                           // on attribue au champs nombre la valeur nvnombre//
        nouvelelement->suivant=liste->premier;                      // on fait pointer le pointeur suivant du nouvel ellement vers le meme endroit que le ponteur de la case liste(qui pointe vers le 1er element actuel//
        liste->premier= nouvelelement;                              // et on fait pointer la case liste vers le nouveau premier element//
     
    }
     
    void suprimer1erelement(Liste *liste)                           // fonction qui supprime le 1er element de la liste//
    {
       if (liste == NULL)
        {
            exit(EXIT_FAILURE);
        }
        if (liste->premier != NULL)                                 // si le 1er element n'est pas nul//
        {
            Element *asuprimer = liste->premier;                    // on cré un pointeur de type element qui va pointer la ou pointe la case liste qui est le 1er element actuel//
            liste->premier=liste->premier->suivant;                  // on fait que le pointeur de la case liste ne pointe plus vers le 1er element actuel met l'elmenent vers lequel le 1er element pointe cad le 2eme element qui sera le nouveau premier element//
            free(asuprimer);                                        // on efface de la memoire ce que notre pointeur pointe cad le 1er element actuel//
        }
    }
     
    void afficherlistechainer(Liste *liste)                         // fonction qui affiche la liste chainée //
    {
         if (liste == NULL)
        {
            exit(EXIT_FAILURE);
        }
        Element *actuel= liste->premier;                            // on crée un element appelé element actuel qui vaut le premier de la liste//
        while(actuel != NULL)                                       // on commence par afficher le nombre de l'element actuel qui est le 1er element, puis on passe a l'element suivant et on le parcours, on le fait tant qu'on est pas arriver a la fin de la liste chainé qui vaut NULL//
        {
            printf("%s|",actuel->chainecaract);
            actuel=actuel->suivant;
        }
     
    }
     
     
     
     
     
     
     
     
     
    int main()
    {
        Liste *maliste=initialisation();
        inssertiondebutdliste(maliste,"0000");
        inssertiondebutdliste(maliste,"0000");
        inssertiondebutdliste(maliste,"0000");
        inssertiondebutdliste(maliste,"0000");
     
     
        Liste *maliste2=initialisation();
        inssertiondebutdliste(maliste2,"0000");
        inssertiondebutdliste(maliste2,"0000");
        inssertiondebutdliste(maliste2,"0000");
        inssertiondebutdliste(maliste2,"0000");
        printf("\n\n");
        afficherlistechainer(maliste);
        printf("\n");
        afficherlistechainer(maliste2);
     
     
     
     
        return 0;
    }

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par stendhal666 Voir le message
    Nos messages se croisent.

    Pour printf il y a des options de format qui permettent de régler ton problème sans passer par la case chaîne de caractères (http://www.cplusplus.com/reference/cstdio/printf/)

    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%05d", 4); // 00004

    Ah merci je ne connaissais pas, je vais essayer!
    Je n'avais pas vu ton message ^^

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Ca marche super! Donc meme si l'utilisateur entre 35 via un scanf il s'écrira automatiquement 00035?
    Parce que moi je comptais précis entrez un nombre a 5 chiffres

  16. #16
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    petite note, pour mettre du code, utilise la balise [code] (bouton #), ou, pour un petit morceau dans une phrase, [c] ou [codeinline]

    scanf n'est pas concu pour lire un utilisateur.
    le format d'affichage est indépendant de celui de lecture
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    J'essai de faire le menu, j'ai essayer avec un switch case mais ça ne marche pas alors je me suis dit que j'allais faire une série de condition si mais quand j'encode ça ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char caseselectionner[2];
    printf("\n\nchoisissez une case :");
    scanf("%s",caseselectionner);
    if(caseselectionner=="a1"){printf("cava");}
    Quand l'utilisateur encode a1 ça ne fait rien du tout, il y a t-il une manipulation spéciale à faire quand on fait une condition avec des caractère?

  18. #18
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 188
    Points : 17 136
    Points
    17 136
    Par défaut
    il faut prendre conscience de ce que sont "a1" et char caseselectionner[2].

    Donc, je te laisse l'exercice:
    1. Quel est le type de "a1"?
    2. Question bonus, à l'exécution, où dans la mémoire se trouve "a1"?
    3. Quel est le type de caseselectionner? (ps: on écrirait plutot case_selectionnée ou caseSelectionnee ou encore selection)
    4. Que fait précisément caseselectionner == "a1"?
    5. Que penses-tu de <string.h>?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par leternel Voir le message
    il faut prendre conscience de ce que sont "a1" et char caseselectionner[2].

    Donc, je te laisse l'exercice:
    1. Quel est le type de "a1"?
    2. Question bonus, à l'exécution, où dans la mémoire se trouve "a1"?
    3. Quel est le type de caseselectionner? (ps: on écrirait plutot case_selectionnée ou caseSelectionnee ou encore selection)
    4. Que fait précisément caseselectionner == "a1"?
    5. Que penses-tu de <string.h>?
    Ça fait plus de question que de réponse dit dont

    1. c'est un type char
    2. a l'emplacement mémoire de la variable caseselectionner
    3. un char aussi non?
    4. ca affecte a la variable caseselectionner les caractère 'a' et '1' l'un a la suite de l'autre et en fait une chaine de caractère
    5. C'est une bibliothèque qui contient des fonctions qui manipule les chaines de caractères

    j'me plante?

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2015
    Messages : 30
    Points : 20
    Points
    20
    Par défaut
    ah oui je pense que je dois utilisé la fonction strcmp, je vais essayer comme ça

Discussions similaires

  1. [VBA Excel] Extraction de données
    Par tpv72 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2005, 21h49
  2. [Excel] Récupérer des données d'une base Access
    Par FoxDeltaSierra dans le forum Excel
    Réponses: 8
    Dernier message: 03/09/2005, 10h22
  3. Réponses: 3
    Dernier message: 25/07/2005, 09h40
  4. Réponses: 5
    Dernier message: 05/07/2005, 20h25
  5. [C#] [Excel] Transfert de données
    Par bartoumi dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h08

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