Langage C #17 - piles

Поделиться
HTML-код
  • Опубликовано: 7 фев 2025
  • Cette séance 17 va nous permettre de découvrir quelques structures de données en langage C.
    🔗 Code source d'une Piles (entiers) : bit.ly/2VW5nET
    🔗 Code source d'une Pile (joueurs) : bit.ly/30Y3ic0
    🔗 Schéma d'une Pile : bit.ly/2O01lH5
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
    ◾ Site web : jasonchampagne.fr
    ◾ Discord : discord.me/jas...
    ◾ Twitch : / jachampagne
    ◾ RUclips (personnel) : / jasonchampagne
    ◾ Twitter : / jachampagne8
    ◾ Facebook : / jachampagne8
    ◾ Instagram : / jachampagne8
    ◾ Snapchat : / jachampagne8
    🔵 Crédits :
    Musique proposée par La Musique Libre
    Wontolla - Can You Feel Me (ft. Nathan Brumley) : • |Musique libre de droi...
    Wontolla : / iamwontolla
    Nathan Brumley : / nathanbrumleysongwriter
    MERCI DE VOTRE FIDÉLITÉ 💙 !
    #langageC #programmation #structures

Комментарии • 534

  • @formation-video
    @formation-video  7 лет назад +17

    Cette séance 17 va nous permettre de découvrir quelques structures de données en langage C.
    🔗 Code source d'une Piles (entiers) : bit.ly/2VW5nET
    🔗 Code source d'une Pile (joueurs) : bit.ly/30Y3ic0
    🔗 Schéma d'une Pile : bit.ly/2O01lH5

    • @mehdi52783
      @mehdi52783 7 лет назад

      salut, j'ai une question : comment se fait il qu'on peut déclarer une variable de type structure(comme "next") à l'intérieure de la même structure qui la définit ? et ça fonctionne uniquement pour des pointeurs j'ai essayer pour une variable de type int et char ça n'a pas fonctionné.

    • @youcefkhedim37
      @youcefkhedim37 6 лет назад

      mon copliateure ne reconé pas tes declaration boolienne vue que j utilise le dev c

    • @ArmoredCyberNemesis
      @ArmoredCyberNemesis 6 лет назад +1

      Coucou Jason, j'ai un problème au niveau de l'énumération / définition de type Bool, les valeurs true et false ne sont pas reconnue par le compilateur de VS 2017. Ce dernier mentionnant : identificateur indéfini.
      Je ne pense pas que ce soit lié au fait que je code un projet en "Visual" C++ (peut-être différent du C++ conventionnel)

    • @e-berry
      @e-berry 5 лет назад

      FILO (First In Last Out) peut fonctionner aussi car Le premier qui rentre sera le dernier qui sort :p

  • @totolerigolo35
    @totolerigolo35 4 года назад +13

    ça commence à se corser pour moi mais ça reste vraiment intéressant. Très bonne vidéo, vraiment merci de partager tes connaissances avec nous, continue comme ça !

    • @formation-video
      @formation-video  4 года назад

      Ne lâche rien et n'hésite pas à faire des petits programmes de ton côté pour mettre ça en pratique 👍

  • @sylvainly7766
    @sylvainly7766 6 лет назад +9

    Super tutoriel, tes explications sont simples et claires ! On peut facilement regarder la vidéo en 1.25 voir 1.5 sans se perdre ! Merci :)

    • @formation-video
      @formation-video  6 лет назад

      Oui, voir en accéléré peut se faire sans soucis pour ceux qui comprennent bien le français. Bonne continuation à toi o/
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @luniversdugeek9164
    @luniversdugeek9164 4 года назад

    c'est la premier fois de ma vie que je dois revoir plusieurs fois une vidéo pour comprendre.
    normalement pour apprendre langage je regarde les vidéo une traite et une seul fois car je n'ai pas le temps.

    • @formation-video
      @formation-video  4 года назад

      C'est normal, ça se corse un peu, et ça met en application beaucoup de concepts vus précédemment 👍

  • @ulrichnelson3636
    @ulrichnelson3636 6 лет назад +1

    merci infiniment pour ce fameux tutoriel sur la pile. elle me sera très utile . deux choses m'ont vraiment touché sur cette partie . Premièrement, c'est cette façon de subdiviser le
    programme pour avoir un code plus lisible et plus facile à comprendre. car je me demande bien à quoi aurait ressemblé le code si l'on avait inclue toutes nos fonctions créée dans
    le fichier (main.c). ahahahaahahah. Enfin j'ai bien pu apprecié l'efficacité sur les pointeurs et pour ma part je pense que c'est l'un des éléments qui fait la puissance de ce langage.
    Un grand merci JASON bravooooooooooooooooooooooooooooooooooooooooooooo et un grand respect.

    • @formation-video
      @formation-video  6 лет назад

      Oui, sans les pointeurs, le C perdrait de tout son potentiel, alors il ne faut hésiter à s'en servir à chaque fois que cela est nécessaire, c'est à dire 98% du temps :)
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8/
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @abdoulayebah2652
    @abdoulayebah2652 10 месяцев назад

    Avec toi, je suis sûr et certain de bien Coder en C !
    Explications trop cool et très simple

  • @diepvu6045
    @diepvu6045 7 лет назад +1

    Oh la la, je m'incline devant ce cours de qualité !
    Merci beaucoup !!!

  • @armelfiavor
    @armelfiavor Год назад +1

    merci infiniment pour tout

    • @formation-video
      @formation-video  Год назад +1

      👍

    • @armelfiavor
      @armelfiavor Год назад

      J'ai clisurle lien mai j'a pas pu télécharger le code source mais grâce à votre explication j'ai pu implémenter correctement le code de A à Z. Encore une fois merci.

    • @formation-video
      @formation-video  Год назад

      Bonne continuation

  • @Atomental_Dr.Forest
    @Atomental_Dr.Forest 3 года назад +1

    Merci beaucoup pour ce tuto très clair ! Bonne continuation !

  • @sir_nobody5199
    @sir_nobody5199 4 месяца назад

    Superbe vidéo encore une fois! J'ai bien aimé la Structure de player à la fin! CHOUBACCA, sympa comme pseudo Ahahaha XD

  • @tirsportifequitation7388
    @tirsportifequitation7388 3 года назад

    Merci beaucoup pour ces cours sur le langage C! J'ai encore quelques lacunes mais je pense qu'à force de répéter ça ira, en tout cas ta formation m'est très utile et je compte bien continuer!

    • @formation-video
      @formation-video  3 года назад

      De rien, et en effet, n'hésite pas à t'exercer, faire des petits programmes, voire des projets, expérimenter, tester ce que tu apprends et voir ce que tu comprends de tout ça à l'arrivée 🙂

    • @tirsportifequitation7388
      @tirsportifequitation7388 3 года назад

      @@formation-video Oui en plus jusqu'à maintenant je ne faisais que visionner les cours (de peur d'endommager mon pc en cas d'erreur ^^) mais il faudrait que je teste moi même aussi en même temps que le cours ce serait mieux, merci pour ta réponse!

    • @formation-video
      @formation-video  3 года назад +1

      Oui, c'est clair, et puis tu ne vas pas endommager ton PC ;)

    • @tirsportifequitation7388
      @tirsportifequitation7388 3 года назад

      @@formation-video génial alors!!

  • @abdulkabir_02
    @abdulkabir_02 6 лет назад +1

    Encore une fois merci bien Jason :)

    • @formation-video
      @formation-video  6 лет назад +1

      De rien, à bientôt 👍
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @jerrygerrard2886
    @jerrygerrard2886 3 года назад

    Aaaahhhhhhhh, Merci beaucoup!

  • @stevekasongo8823
    @stevekasongo8823 5 лет назад

    bonjour grand frère, merci pour la formation que le grand Dieu vous bénisse

    • @formation-video
      @formation-video  5 лет назад

      Merci à toi 🙂
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

  • @baptiste_g8759
    @baptiste_g8759 2 года назад

    merci beaucoup, toujours aussi utile !

  • @best-songslyrics3582
    @best-songslyrics3582 4 года назад

    vous etes un heros haha, vous etes super mon frere =D

    • @formation-video
      @formation-video  4 года назад +1

      🙂
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @thecrazzxz3383
    @thecrazzxz3383 2 года назад

    Pile ce qu'il fallait !

  • @jessysaintauret3615
    @jessysaintauret3615 7 лет назад +2

    Salut à 18:30 tu fais l'allocation dynamique et je me demande pourquoi dans l'argument du sizeof tu utilise * element et non StackElement* , sachant que pour moi StackElement* est un pointeur de type StackElement et * element le déréferencement d'élément. Du coup j'ai comparé le résultat du sizeof(StackElement*) et sizeof(*element) et ce dernier est plus grand en plus si je comprend bien *element retourne ce qui est contenu à cette adresse et à cette adresse il y a une structure de type StackElement sans préciser l'adresse de next ou la valeur de cette élément.

    • @formation-video
      @formation-video  7 лет назад

      Bonsoir :).
      En temps normal, tu pourrais remplacer le "*element" du sizeof() non pas par "StackElement*" mais "StackElement" tout court (sans l'étoile). Or, j'ai pris l'habitude de mettre directement le nom du pointeur pour l'allocation plutôt que le type. De cette façon, si je venais un jour à changer le nom du type, je n'aurais pas à toucher aux allocations, c'est tout.
      Donc, tu peux sans problème faire un *malloc(sizeof(StackElement))* si tu le souhaites.

  • @lessystemesembarques6403
    @lessystemesembarques6403 6 лет назад +1

    Bonjour , Bon travail merci pour vos cours très complet , pourriez vous svp d'expliquer d'avantage les pointeurs sur les structures expliquer par des exemples indépendants , merci

    • @formation-video
      @formation-video  6 лет назад

      Tout ce qu'il y a à savoir sur les pointeurs est détaillé dans le cours sur les pointeurs : ruclips.net/video/Qra-0U_jEKs/видео.html
      Leur application est la même, que ce soit avec ou sans l'utilisation de structures ;)

  • @ichinosevoid9034
    @ichinosevoid9034 5 лет назад

    Bonjour/soir , je ne comprend pas la présence de ce pointeur ici 8:35 , il n’est pas défini et pointe sur rien (tu as dit qu'il pointe sur la pile mais d'où on sait ça), je ne comprend donc pas sa présence et je ne comprend pas non-lus l'utilité de *next (enfin tu l'as dit c'est pour passer a la pile d'en dessous) mais d'où on sait ça, comment ça se fait ?

    • @formation-video
      @formation-video  5 лет назад +1

      En fait, je définis une double syntaxe pour ma structure de Pile. En gros, StackElement est une struct Stack, et Stack également.
      Dans la structure elle-même, chaque élément de la pile doit être lié aux autres (sinon, chaque élément serait isolée et nous n'aurions aucune structure, mais que des variables isolées). Donc, on indique que chaque "maillon" (élément) de la Pile pointe vers un autre élément (sinon NULL).
      Ce chaînage est nécessaire pour établir la liaison de nos éléments (tu retrouveras le même principe avec une File, une Liste, ou autre...) et permet de parcourir la structure (du premier au dernier élément).
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @patpast9739
    @patpast9739 5 лет назад

    Bonjour Jason. Alors il y a beaucoup de manipulations que tu fais avec les pointeurs, mais je ne les comprends pas tous.
    Par exemple à 30:16 lorsque tu crées une fonction print_stack pour afficher la pile dans la console, je vois bien que tu parcours toute la pile avec une boucle while mais l'action que tu fais après le print, le "st = st->next" si j'ai bien compris, ça modifie la pile pointée par st vu que celui-ci est un pointeur?
    Donc je pense avoir mal compris (puisque la fonction marche), mais pourquoi la pile ne se détruit pas à chaque fois que la fonction fini de s'exécuter?

    • @formation-video
      @formation-video  5 лет назад

      Bonjour, l'instruction st = st->next permet de déplacer le "curseur" (l'endroit où l'on se situe pour le parcours sur l'élément suivant). En gros, on commence du premier élément (avec lequel on fera nos traitement), puis on passe à l'élément suivant, jusqu'à arriver à la fin (quand st->next vaut NULL).
      Par ailleurs, la Pile n'a aucune raison d'être détruite puisque nous passons un pointeur vers celle-ci dans nos fonctions. Ce qui sera détruit à la fin de la fonction, c'et le pointeur qui a été créé au départ de celle-ci, pas la structure elle-même 🙂
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      🔵 Rejoindre FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

  • @purplemyself6792
    @purplemyself6792 4 года назад

    Super explication comme toujours .... J'avais très peur de cette leçon mais maintenant je la trouve très simple et je la comprends très bien Merci Jason .
    j'ai juste une remarque dans ce qui concerne la fonction top_stack dans ce fichier bit.ly/2VW5nET .
    le problème se pose dans cette ligne : exit(EXIT_FAILURE); :
    Si on utilise cette ligne, le compilateur va sortir du programme sans exécuter les instructions qui se suivent alors il faut renvoyer un nombre pour que la compilation du programme continue . On peut retourner un entier négatif comme vous l'avez fait dans la vidéo.
    Bonne continuation ^^

    • @formation-video
      @formation-video  4 года назад +1

      Oui, si on veut être rigoureux, il faut bien gérer les codes de retour des fonctions et traiter cela ensuite dans la fonction main()

  • @nassiradouma2024
    @nassiradouma2024 2 года назад

    gros merci 🥰

  • @kallax6087
    @kallax6087 Год назад

    Bonjour, il semblerai qu'il y a une erreur sur le schéma à 25:40, on crée d'abord l'élément contenant la valeur 31, donc le sommet serait plutôt en bas ?
    En tout cas, j'adore vos vidéos ça m'aide à comprendre beaucoup plus de choses sur le C !

    • @formation-video
      @formation-video  Год назад

      Bonjour, non, le sommet de la pile, c'est le dernier élément qui a été ajouté à la pile (et celui qui sera le premier a être dépilé). C'est pour cela qu'il faut vraiment le voir comme une pile d'objets. Le sommet d'une pile n'est jamais l'élément qui se trouve tout en bas de celle-ci 😉

  • @ai.aspirations
    @ai.aspirations 2 года назад

    parfait! et merci

  • @saliha5733
    @saliha5733 2 года назад

    Super explication👏👏👏

  • @fathallahilyes529
    @fathallahilyes529 7 лет назад +1

    vous aurez du utilisé un pointeur pour Player non pas utiliser la structure player directement dans la structure des pille
    Par exemple dans la minute 52:20 si vous avez utilisé un pointeur ça va pas poser un probleme avec le "NULL "

    • @formation-video
      @formation-video  7 лет назад +1

      Oui, c'est une solution préférable, mais je ne voulais pas compliquer le code ici, donc le exit() fait l'affaire également ;)

  • @ericleguen4718
    @ericleguen4718 2 месяца назад

    Hello!, à 30:30 dans print_stack(Stack st) peut-on se passer du 'return' et coder comme cela ? :
    void print_stack(Stack st)
    {
    if(is_empty_stack(st))
    printf("Rien à afficher, la pile est vide.
    ");
    while(!is_empty_stack(st))
    {
    printf("[%d]
    ", st->value);
    st = st->next;
    }
    }
    Merci ! 😁

    • @formation-video
      @formation-video  Месяц назад +1

      Bonjour, oui, tu peux. La différence ici est que ton code vérifiera la condition de la boucle.

    • @ericleguen4718
      @ericleguen4718 Месяц назад

      @@formation-video Hello, mais donc dans ta version de code, ne faut-il pas un 'return' après la boucle while ? Sinon quand ce 'while' a fini de travailler, comment la fonction se conclue-t-elle ? Dans le cas du if du dessus, un 'return' fait bien sortir de la fonction, alors pourquoi pas après le 'while' ?.... Je patauge.
      Avec mes meilleurs vœux ! 😁👍

  • @jekiffelebon8271
    @jekiffelebon8271 4 года назад

    Bonjour Jason, merci pour ce travail bien fait; j'aimemrais tout de même comprendre la ligne (struct StackElement *next) qui intervient dans la déclaration de la structure (typedef struct stackElement). Je m'attendais à ce qu'elle soit ignorée par le compilateur car faisant partie des champs de la structure créée.

    • @formation-video
      @formation-video  4 года назад

      Bonjour, et bien non, on peut parfaitement définir une structure dont un de ses membres est aussi du type de la structure.
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @IronMan-vq8pg
    @IronMan-vq8pg 3 года назад

    Tu avait raison, au début il y a une semaine, je comprenais vraiment pas bien les piles, puis en faisant des schémas de mon côtés pour essayer de comprendre, je comprends mieux, mais d'ailleurs, c'était pas mieux de commencer par les listes chainées avant les piles ?
    Merci pour tes vidéos !

    • @formation-video
      @formation-video  3 года назад

      Non, pas besoin de commencer avec une structure en particulier, étant donné que leur fonctionnement est différent de l'une à l'autre

    • @IronMan-vq8pg
      @IronMan-vq8pg 3 года назад

      @@formation-video ah d'accord, en gros celle là est plus simple. Mais une autre question, pour ajouter des éléments à la pile, on peut passer par des pointeurs au lieu d'incrémenter la nouvelle valeur directement à la pile ? En gros, on appelle juste la fonction (void) qui ajoute.

    • @formation-video
      @formation-video  3 года назад

      Pas compris, mais c'est ce qui est fait dans la vidéo. Dans une Pile, on ajoute des éléments par "le début". C'est ce que fait la fonction push_stack()

    • @IronMan-vq8pg
      @IronMan-vq8pg 3 года назад

      @@formation-video Pour ajouter un élément, toi tu as fait ça : stack = push_stack(stack, x);
      Est ce qu'on pourrais modifier cette fonction pour juste l'appeler comme ça :
      push_stack(stack, x);

    • @formation-video
      @formation-video  3 года назад

      Oui, il suffit d'adapter la structure de données 👍

  • @bensimplement9455
    @bensimplement9455 4 года назад +1

    Bonsoir,
    J'ai une question au sur la nouvelle structure player car je ne comprends pas. En effet, 45'33" il faut créer un nouveau header pour cette nouvelle structure. Pourquoi? pourtant cette structure est utilisée par l'autre ou plutôt les deux structures forment la pile...

  • @M2OHA
    @M2OHA 6 лет назад +1

    dans la fonction d'affichage tu fais st=st->next , or c'est un pointeur , cela n'affecte pas la suite (tu perd pas ta tete de pile) apres l'execution de la fonction ? et si on voulait que par exemple notre st a la sortie change on met come entree Stack* st ?

    • @M2OHA
      @M2OHA 6 лет назад +2

      tout comme dans lenght le fait de faire st=st->next cela ne te fais pas perdre la tete de la pile ?

    • @formation-video
      @formation-video  6 лет назад

      Le but n'est pas de perdre les données de la Pile, juste de les parcourir de la première à la dernière pour les afficher, ou compter le nombre d'élements. On ne fait donc que déplacer un pointeur sur chaque élément, rien de plus ;)

    • @M2OHA
      @M2OHA 6 лет назад +1

      oui mais le fait de deplacer le pointeur ne te fera pas perdre l'adresse de l'element de tete ?

    • @formation-video
      @formation-video  6 лет назад

      Non du tout ;)

  • @davidgoldman5144
    @davidgoldman5144 5 лет назад +1

    à 9:14 je ne comprends pas la ligne " struct StackElement *next " pourtant j'ai revus et bien compris la vidéo des pointeurs. Je dirais que le pointeur next pointe vers la structure StackElement mais je ne suis absolument pas sur. Peux-tu me corriger stp? Merci d'avance! Et au passage, super vidéo, comme toutes les autres d'ailleurs...

    • @formation-video
      @formation-video  5 лет назад +1

      Bonsoir, en fait "next" est un pointeur vers une donnée de type "StackElement". Car un Pile, dans l'implémentation proposée, qu'est-ce que c'est ?
      - Pile vide = NULL
      - Stack avec 1 seul élément = Pile
      - Stack avec 2 éléments = Pile
      - Stack avec 100 élements = Pile.
      Donc, pour chaîner chaque élément dans une Pile, le pointeur "next" pointe sur un autre élément de Pile (StackElement), sinon NULL (on est au bout de la Pile).
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @Turkish_coffee_42
      @Turkish_coffee_42 4 года назад

      @@formation-video excusez moi, je ne comprends pas au niveau du pointeur:
      celui ci est de type stackelement, mais il peut pointer des piles de plusieurs tailles differentes si j'ai bien compris, est ce logique qu'un pointeur d'espace fixe ici 4 bits puisse pointer plusieurs piles de tailles differentes ?
      merci,

  • @M2OHA
    @M2OHA 6 лет назад +2

    dans la fonction afficher comme dans length tu as parcouru la pile or dans la notion de pile on a pas le droit de parcourir non ? (on vide plutot la pile dans une autre et on remet )

    • @formation-video
      @formation-video  6 лет назад

      Non, il est tout à fait possible d'afficher une Pile, que ce soit en remplissant une autre ou en la parcourant. Le principe de la Pile doit surtout respecter le fait que tu ne pourras dépiler que la dernière donnée qui a été empilée. Donc remplissage par le haut.

    • @garagedesexpos54500
      @garagedesexpos54500 6 лет назад

      Titoonis

  • @urxul
    @urxul 2 года назад

    Super bien explique. au fait est ce que c'etait possible de creer ka pile et ses focntions sans pointeur? SI cest non est est uniquement parce que le passage pas valeur n'aurait pas permis d'agir sur la pile ou il ya d'autres raisons

    • @formation-video
      @formation-video  2 года назад +1

      Non, car ton ordinateur ne sait pas ce qu'est une Pile, ni l'espace que cela a besoin, et on ne connaît pas à l'avance le nombre d'éléments qu'elle aura. Donc : pointeurs et allocations de mémoire dynamiques.

    • @urxul
      @urxul 2 года назад

      @@formation-video oh je vois merci beaucoup pour avoir repondu. C'est aussi pour ca tu as utilise *Stack? Des fois quand tu utlise StackElement tu met * devant element mais quand tu utilise Stack tu ne met rien. est ce que ca veut dire que les deux sont equivalents? j'ai remarque que tu as utulise Stack uniquement avec les focntions aussi et StackElement avec les piles temporaires des fonctions

    • @formation-video
      @formation-video  2 года назад +1

      C'est surtout par rapport aux alias créés à partir de la structure avec typedef. Dans ma définition, j'ai créé deux alias :
      - le premier pour dire que struct StackElement est équivalent à StackElement
      - le second pour dire que struct StackElement est équivalent à *Stack
      Ainsi, dans le premier on doit mentionner le pointeur, dans la seconde, il est masqué 👍

    • @urxul
      @urxul 2 года назад

      @@formation-video ah c'est plus clair maintenant merci beaucoup

    • @formation-video
      @formation-video  2 года назад

      De rien

  • @jean-jacqueskonan2488
    @jean-jacqueskonan2488 4 года назад

    bonsoir monsieur j'ai un problème d'inconpréhension au niveau de la fonction clear_stack à la 25:29 en faisant free(st) pourquoi cela ne vide pas toute la pile puisque la pile c'est st
    moi j'aurais fais free(element) et j'aurais fais une erreur svp eclairez moi

    • @formation-video
      @formation-video  4 года назад

      Parce que si tu regardes bien, on a alloué un espace (malloc) pour chaque élément de la Pile. Il faut donc naturellement libérer (free) chaque élément à son tour.
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

    • @jean-jacqueskonan2488
      @jean-jacqueskonan2488 4 года назад

      @@formation-video je vois mais je ne sais pas si j'ai pas encore compris mais liberé la pile ( free(stack) ) c'est aussi la libéré de tout ses éléments pourquoi rappeler alors la fonction en retournant stack_element puisqu'il n'en a plus dans le pile

    • @formation-video
      @formation-video  4 года назад

      Pour faire simple, tu dois faire autant de free() que tu as fait de malloc(), donc pas qu'un seul 😉
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

    • @jean-jacqueskonan2488
      @jean-jacqueskonan2488 4 года назад

      @@formation-video je comprend bien ce fait je pense que ne saurais expliquer par écrit ce que je pense il y'aurait-il un moyen de vous joindre svp svp!!!!!!!

  • @ArmoredCyberNemesis
    @ArmoredCyberNemesis 6 лет назад +1

    Bonsoir Jason, j'ai un problème avec l'énumération / définition de type Bool, les valeurs
    true et false ne sont pas reconnue par le compilateur de VS 2017. Ce dernier
    mentionnant : identificateur indéfini.
    C'est vraiment curieux car ta manière est censée fonctionner de partout comme tu l'as si bien dit.
    Je ne pense pas que ce soit par ce que je code un projet Visual C++ (différent du C++ conventionnel)

    • @formation-video
      @formation-video  6 лет назад

      Bonjour, c'est Visual Studio qui ne doit pas accepter cette syntaxe. L'IDE ne te propose-t-il pas une autre syntaxe ? Ou même de directement utiliser le type bool introduit par la suite en standard dans le langage C ?

    • @ArmoredCyberNemesis
      @ArmoredCyberNemesis 6 лет назад +1

      FormationVidéo Il est en effet possible d'utiliser le type Book sans passer par l'énum mais VS2017 n'aime pas non plus l'alloc mémoire d' *élément, il mais que l'assignation (le égal) pose problème :
      element = malloc(sizeof(*element));
      Merci encore ^^

    • @formation-video
      @formation-video  6 лет назад

      Alors soit ton VS2017 est mal configuré, soit il faut changer d'IDE. Car la syntaxe pour le malloc est évidemment correcte :)

  • @barbeblanche1581
    @barbeblanche1581 3 года назад +1

    Est ce que *Stack et StackElement, c'est la même chose ? Je comprends pas pourquoi il y en a deux, et pourquoi l'un est un pointeur et pas l'autre ?

    • @formation-video
      @formation-video  3 года назад

      Stackement est un alias de Stack, c'est le principe du typedef 👍. C'est juste pour avoir deux nommages et que ce soit plus lisible au niveau du code (si on voit Stack, on pensera à la pile complète, et si on voit StackElement, on pensera à un seul élément d'une pile)

    • @barbeblanche1581
      @barbeblanche1581 3 года назад

      @@formation-video Mais pourquoi lorsque je remplace Stack par StackElement, j'ai une erreur ?

    • @formation-video
      @formation-video  3 года назад

      Si tu as bien regardé. Avec la notation "Stack", pas de pointeur indiqué, mais avec "StackElement", oui

    • @barbeblanche1581
      @barbeblanche1581 3 года назад

      @@formation-video donc je met un & devant ? Et sinon, j'ai une question, pourquoi on met un *devant une fonction et c'est quoi la différence ? Merci pour tes réponses.

    • @formation-video
      @formation-video  3 года назад

      Non : pastebin.com/hUsmXJDu
      Si une fonction a comme type de retour int* par exemple, cela veut simplement dire qu'elle renvoie un pointeur sur int (entier).

  • @massyle5198
    @massyle5198 7 лет назад +2

    Bonjour, ce que je n'arrive pas à comprendre, c'est le " *Stack " que tu as ajouté à l'énonciation de la structure de la pile. Tu dis qu'on "cache le pointeur" , ça non plus je comprends pas. Merci d'avance ! :)

    • @formation-video
      @formation-video  7 лет назад +1

      Bonsoir, si je ne mettais pas cette syntaxe, il faudrait écrire la structure en faisant : Stack *st (au lieu de Stack st) et d'autres changements dans le code.
      En le masquant, on évite les erreurs d'oubli de l'étoile par exemple, c'est tout :)

    • @massyle5198
      @massyle5198 7 лет назад +1

      Ah d'accord, donc pour la machine " StackElement" et "*Stack" c'est exactement la même chose, non ?

    • @formation-video
      @formation-video  7 лет назад +1

      Oui, la même structure :)

    • @massyle5198
      @massyle5198 7 лет назад +1

      Voilà c'était pour être sûr, désolé pour la question bête xD. Merci ! :)

    • @formation-video
      @formation-video  7 лет назад +1

      Il n'y a jamais de question bête =)

  • @sebastiencoquil9718
    @sebastiencoquil9718 3 года назад

    Bonjour,
    j'ai une question par rapport au type des fonctions et au pointeur caché dans la stucture "StackElement" :
    Est-ce que le fait d'appelé une fonction par "Stack nomDeFonction (param 1, ..)" est en fait une manière de créer un pointeur de fonction ?
    (afin de renvoyer l'adresse de la fonction et d'éviter de renvoyer l'adresse des éléments de la structure modifié par la fonction via des pointeurs)
    Merci d'avance pour vos réponses et j'apprécie énormément vos cours qui sont clairs pour la majorité !

    • @formation-video
      @formation-video  3 года назад +1

      Bonjour, cela ne concerne pas les pointeurs de fonction, c'est juste pour avoir un nom simple (ici Stack) pour représenter la structure de notre pile 👍

    • @sebastiencoquil9718
      @sebastiencoquil9718 3 года назад

      @@formation-video D'accord. Je pense que je commence à comprendre : si on créer une fonction avec "Stack" on demandera de fait à la fonction de retourner non seulement une stack mais avec l'adresse de celle-ci (comme on déclare "*Stack" dans la structure) en plus, est-ce correcte ?
      Merci pour votre réponse et j'adore vos vidéos même si ce n'est pas toujours évident vous m'aidez & m'apprenez beaucoup !

    • @formation-video
      @formation-video  3 года назад +1

      Oui, sinon on ne pourrait pas modifier notre structure de données 😉

  • @connexionvitale
    @connexionvitale 6 лет назад +1

    Merci Jason pour la qualité pédagogique et le pan sur les structures de données. On fait un saut, là partir de #17.
    Bizarre, en testant le programme, la console retourne "gcc : error *.c : invalid argument . Je ne vois pas ce qui cloche..

    • @formation-video
      @formation-video  6 лет назад

      Oui, les notions du C sont abordées les 16 premières vidéos. À partir de cette séance, tu ne vas voir que l'application dans quelques domaines du langage, et apprendre à manipuler quelques structures de données ;)
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8/
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @formation-video
      @formation-video  6 лет назад

      Pour ton erreur de compilation, regarde de bien faire : gcc *.c -o prog pour compiler l'ensemble de tes fichiers source (extension ".c" tout en les liant avec les en-êtes ".h")
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8/
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @connexionvitale
      @connexionvitale 6 лет назад +1

      merci Jason

    • @formation-video
      @formation-video  6 лет назад

      De rien, à bientôt =)
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8/
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @nakriamine1925
    @nakriamine1925 6 лет назад +1

    Vraiment merci beaucoup pour ces explications !!
    j'ai juste un petite demande : t'a pas une idée sur le jeu de dames ou un exemple d'un projet d'une jeu ...?

    • @formation-video
      @formation-video  6 лет назад

      Tu peux voir sur la playlist des exercices pour t'entraîner. Il y en aura plusieurs au fur et à mesure et à difficulté croissante : ruclips.net/p/PLrSOXFDHBtfF6lXQpJ4hBha76DsQufiEQ

  • @edp6688
    @edp6688 4 года назад

    Bonjour, je ne comprends pas bien le fait de donner deux nom au typage de pile : StackElement et *Stack. J'ai bien compris que la pile et un élement c'est la même chose mais pourquoi écrire *Stack et non Stack ? Merci à toi. Belle soirée.

    • @formation-video
      @formation-video  4 года назад

      Bonjour, c'est une syntaxe purement usuelle pour représenter une structure de Pile. Car ici, une Pile peut avoir 0, un ou plusieurs éléments, c'est une Pile dans tous les cas

  • @lemondeestloeuvredunenfant4633
    @lemondeestloeuvredunenfant4633 7 лет назад +1

    Salut. Je ne comprends pas comment tu peux utiliser Stack comme type quand tu définis ta fonction pour créer une nouvelle pile, alors que quand tu as définis ta structure, tu as donné deux noms possibles : StackElement et *Stack, mais pas Stack tout seul.
    Stack new_stack(void).
    Je comprends bien qu'il y-a plusieurs d'utiliser un pointeur et que tu peux ne pas mettre l'étoile devant, et dans ce cas tu obtiens non pas la valeur de la variable pointée, mais l'adresse où elle se trouve.
    Pourtant, ici ce pointeur est le nom d'un type, alors Stack tout seul n'est pas définit comme un nom de type de variable, alors comment se fait-il que tu puisses créer une fonction avec comme Stack comme type de retour ?
    Merci d'avance si tu peux apporter une réponse.

    • @formation-video
      @formation-video  7 лет назад

      Je réponds sur ton autre commentaire alors ;)

  • @theobdr599
    @theobdr599 Год назад +1

    Bonjour il y a un truc que je ne comprends pas dans la fonction servant à afficher la pile. J'ai l'impression que la boucle while vide la pile puisque la condition est "while (!empty_stack(st))" et pourtant quand on demande si la pile contient des elements apres son affichage la réponde et que oui il y a bien 47 et 14 dans la pile.

    • @formation-video
      @formation-video  Год назад

      Bonjour, refais-toi l'algorithme dans ta tête (ou en faisant un schéma) en prenant l'ensemble du code de la fonction d'affichage, et tu comprendras 😉

    • @Low_Han
      @Low_Han Год назад +1

      Bonjour, la fonction d'affichage ne modifie pas la pile puisqu'elle ne renvoie rien en retour. Donc si tu demandes grâce à la fonction "is_empty_stack" si ta pile est vide après l'avoir affichée, c'est normal que le programme te dise qu'elle n'est pas vide.

    • @theobdr599
      @theobdr599 Год назад

      @@Low_Han ah ouai ok merci

  • @SilasDBrito
    @SilasDBrito 4 года назад

    c'est cool et bien expliqué ...
    Mais je me demande quand même un truc :
    Est ce que ça ne fait pas exactement le même taf qu'un tableau ? Du coup c'est quoi le contexte pour utiliser une pile ?
    Sans compter qu'en plus le tableau on peut cibler précisément un index pour récup une donnée. Du coup j'ai du mal à visualiser l'intérêt ?

    • @formation-video
      @formation-video  4 года назад +1

      Un tableau est conçu pour une besoin bien précis, là où la Pile a son propre usage aussi. On veut pouvoir implémenter des structures pour contrôler la gestion des données (dans une Pile, on ne veut justement pas pouvoir ajouter/retirer un élément de n'importe où)

  • @HB_
    @HB_ 5 лет назад

    Pour commencer un grand merciii pour le travail que vous faites. C'est très instructif.
    Sinon, une question, c'est quoi l’intérêt de donner 2 Alias de noms a la pile ?

    • @formation-video
      @formation-video  5 лет назад

      Bonsoir, les deux alias sont là pour rendre le code plus lisible ensuite. Comme une Pile n'ayant qu'un seul élément est aussi une Pile, il serait bizarre de dire qu'une Pile contient des Piles. Donc, avec cette syntaxe, ça permet en lisant le code de comprendre qu'une pile (Stack) possède des éléments (StackElement).
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @HB_
      @HB_ 5 лет назад

      @@formation-video C'est très claire, un très grand merci

  • @EnThib
    @EnThib Год назад

    Petite question, pour les stacks, on reféfini à chaque fois la variable stack pour mettre à jour notre pile mais dans ce cas ne serait-il pas plus opti de passer par l'adresse de la stack et de la manipuler via des pointeurs au lieu de ce passage par valeur ?

    • @formation-video
      @formation-video  Год назад +1

      Regarde comment est définie la structure de la Pile

    • @EnThib
      @EnThib Год назад

      @@formation-video ok je comprend un petit rafraîchissement de mémoire sur les structures et les pointeurs dans les structures n'était pas de trop 😅 Merci pour ta réponse

    • @formation-video
      @formation-video  Год назад

      👍

  • @Joel-mq6ht
    @Joel-mq6ht Год назад

    Bonsoir, lorsqu'on crée notre structure pour la pile et que l'on crée une fonction pour retirer un un élément, le return renvoi t'il une adresse d'un élément de structure crée pour la pile ?

    • @formation-video
      @formation-video  Год назад +1

      Bonjour, la fonction pop_stack() renvoie une "Stack", c'est-à-dire la pile moins l'élément qui a été supprimé, comme expliqué dans la vidéo 👍

  • @ericleguen4718
    @ericleguen4718 29 дней назад

    Hello. dans clear_stack() optimisée à 38:39, l'appel pop_stack(st) ne suffit-il pas ?.
    Pourquoi "st" = pop_stack(st) ? (qui chez moi renvoie une Segmentation fault: 11)
    Merci ! 😁

    • @formation-video
      @formation-video  28 дней назад +1

      Non, un simple appel à pop_stack(st) ne suffirait pas si on a plusieurs éléments dans la pile. On fait donc de tous les supprimer jusqu'à obtenir une pile vide.

  • @bensimplement9455
    @bensimplement9455 4 года назад

    Merci pour ce tuto

  • @asmagacem4153
    @asmagacem4153 6 лет назад +1

    salut Jason !! d'abord je vous remercie pour tout l'aide que vous nous portez sincèrement depuis que je suis tes vidéos j'ai quitter tout les site que je suivis avant... enfin bref !
    Ma question est la suivante : Comment peut on réaliser un algorithme de tri d'une pile ? j'ai essayé plusieurs fois mais je n'ai pas arrivé et est ce qu'il n y a pas une fonction prédéfinie pour l'utiliser merci d'avance jason ! c'est ASMA
    love u

    • @formation-video
      @formation-video  6 лет назад

      Bonjour, et bien si ta Pile contient des entiers, il suffit d'utiliser les algorithmes de tri habituels pour trier des nombres, simplement :).
      Après, une Pile n'est pas une structure conçue pour stocker des données triées (puisqu'on empile par le haut, et la première valeur retirée de la Pile sera toujours la dernière qui y a été ajoutée).
      Pour plus d'infos sur l'Algorithmie, je te renvoie sur mon début de cours : ruclips.net/p/PLrSOXFDHBtfGy7xYmf5LlNr8f-niDkf7_

    • @asmagacem4153
      @asmagacem4153 6 лет назад +1

      donc si par exemple jai une pile de 4 element et que je veux deplacer le 3eme element en première position la solution est de parcourir jusqu'au 3eme element et je le dépile c'est faisable? bien sur en réorganiser le pointage ...
      je suis débutante dans la programmation du coup j'essaye de reproduire les algos qu'on voit sauvant sur les piles je n'ai aucun interet de faire le tri et je ne sais pas si c'est utile ou pas lol pour etre honnete et puis je reve d'etre programmeur comme vous . merci pour votre réponse :) !

    • @formation-video
      @formation-video  6 лет назад +1

      On peut se tutoyer ;).
      Alors oui, tu peux procéder ainsi, mais le mieux, sera de dépiler toutes les valeurs qu'il faut (en les sauvegardant dans des variables), jusqu'à avoir la valeur à mettre en premier, puis ré-empiler les valeurs sauvegardées et finir par empiler la valeur qui sera en première position.
      Après, un tri se fait surtout sur une Liste, pas vraiment une Pile qui n'est pas faite pour cela. Bon courage pour ton avancée en langage C

    • @asmagacem4153
      @asmagacem4153 6 лет назад +1

      Ahh d'accord ! merci infiniment pour laide que tu ns porte Jason :) !

    • @formation-video
      @formation-video  6 лет назад

      C'est avec plaisir, n'hésite pas si tu rencontres d'autres soucis, je réponds toujours aux commentaires :)

  • @Sowghaii
    @Sowghaii 7 лет назад +1

    Bonjour, j'ai une question, je ne comprends pas l'utilité d'une pile si celle-ci est structurée de la même façon qu'une liste. En fait, ce que je veux dire, c'est que la fonction push_stack est la même que insertHead d'une liste chainée d'entier, alors qu'est-ce qui différencie ces 2 méthodes ?

    • @formation-video
      @formation-video  7 лет назад +1

      Bonjour, tout dépend de l'implémentation que les gens veulent en faire.
      Grosso-modo, on a 3 types de structures :
      Pile : on ajoute des données par l'avant, et on retire par l'avant (la première donnée à avoir été insérée sera la dernière à être retirée).
      File : on ajoute des données par l'arrière, et on retire de l'avant (la première donnée à avoir été insérée sera la première à être retirée).
      Liste : plus flexible, elle ne suit pas de contrainte particulière (on peut ajouter/supprimer depuis le début, la fin, et même en plein milieu de la structure).
      Chaque structure répond donc à des besoins spécifiques :)

    • @Sowghaii
      @Sowghaii 7 лет назад +1

      C'est compris, merci pour votre réponse :)

    • @formation-video
      @formation-video  7 лет назад

      De rien ;)

  • @sekoubatoure603
    @sekoubatoure603 10 месяцев назад

    J'ai finalement compris les piles , par contre j'ai une petite question au niveau de la fonction pop_stack, moi j'ai juste fait return st.next sans faire le free de st, parce que la fonction clear_stack s'occupe de tout après dans main, et cela a fonctionné , est-ce une bonne manière aussi? merci.

    • @formation-video
      @formation-video  10 месяцев назад

      Non, la fonction pop_stack dépile un élément. Elle doit donc faire son travail de nettoyage de ce qui a été alloué. D'ailleurs, la fonction clear_stack() utilise pop_stack() pour libérer les ressources, ce n'est pas elle qui libère directement ce qui est alloué.

  • @fatal-et
    @fatal-et 5 лет назад

    Bonjour Jason,
    J'ai suivi ton programme et au moment de la compilation, j'ai un warning "assignement makes pointer from integer without a cast" à la ligne qui flush la pile dans le main. Cela dit le programme s'execute quand même sans erreur. As-tu une explication de ce warning ? Merci

    • @formation-video
      @formation-video  5 лет назад

      Bonjour, peux-tu montrer le code ? Car cette erreur risque de poser problème pour l'exécution, il faudrait la corriger
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @Dmoniste64
    @Dmoniste64 7 лет назад +1

    Salut, j'ai une question.A quoi ça sert de mettre "structure StackElement *next" à l'intérieur de la première structure ?Je ne me souvient pas que tu en ais parlé dans le cour "structure et type".

    • @formation-video
      @formation-video  7 лет назад +2

      Pour le maillon suivant de la Pile.
      Tu as du comprendre qu'une Pile qui n'a qu'un seul élement est aussi une Pile. Donc, elle a une valeur, et un pointeur vers l'élément suivant, et ainsi de suite. Voilà pourquoi on a donc un pointeur vers une Pile dans une Pile.

    • @Dmoniste64
      @Dmoniste64 7 лет назад +1

      Merci j'ai enfin compris.

    • @formation-video
      @formation-video  7 лет назад

      Bien =)

  • @joeldumortier8043
    @joeldumortier8043 3 года назад

    Bonjour. Je suis en train d'apprendre le C et je te remercie pour tes vidéos qui sont très claires. Cependant je dois avouer que, si j'ai regardé les 16 premières vidéos sans soucis de compréhension, je ne comprends pas bien celle-ci.En effet je ne comprends pas , concrètement , à quel moment dois-je organiser mon code comme tu le fais dans la vidéo, en pile....?Je ne sais pas si je suis clair, où s'il y a un truc que j'ai zappé au cours de la formation. Merci d'avance pour ton aide.

    • @formation-video
      @formation-video  3 года назад +1

      Bonjour, à partir de cette séance 17, ce ne sont plus des notions propres au C directement. En gros, tu as appris les notions du langage. Ici ce sont des structures de données (parmi d'autres : graphes, arbres, files, listes) qui sont des structures très utilisées en informatique pour ordonner/trier/hiérarchiser des données.
      Par exemple, la mémoire virtuelle utilisée par ton programme stocke les variables que tu déclares sur une Pile, qui fonctionne sur ce même principe. En intelligence artificielle, on va retrouver des arbres, pour calculer des itinéraires de graphes, etc.

    • @joeldumortier8043
      @joeldumortier8043 3 года назад

      @@formation-video ok merci beaucoup pour ta réponse

    • @formation-video
      @formation-video  3 года назад

      De rien 👋

  • @Street_Cyberman
    @Street_Cyberman 2 года назад

    Je me suis arrêté à 20:39 de la vidéo, j'ai essayé de bricoler un code qui créer une piles de 10 éléments en rangeant l'adresse de chaque éléments dans un tableau, puis d'en afficher le contenu, puis de libérer chaque espace réserver (avec malloc) dans le tas (heap).
    J'ai réussi (enfin je crois, le programme affiche ce que je veux), mais je me suis confronté à une question existentielle.
    Quelle est la différence entre " StackElement** tab; " et " StackElement* tab[12]; " ??? voir ligne 10 du fichier main.c
    Avec " StackElement* tab[12] " le code marche, alors qu'avec une suite de " StackElement** tab ", cdt *(tab+i) pour ranger les adresses des struct dedans, ça plante.
    Je met mes trois fichiers en réponse.

    • @Street_Cyberman
      @Street_Cyberman 2 года назад

      Main.c
      #include
      #include
      #include "pile.h"
      int main()
      {
      int i;
      type_pile* save;
      type_pile* element = pileVierge();
      type_pile* adresse_pile[12];
      //type_pile** adresse_pile;

      if(testPileVide(element))
      {
      printf("La pille est vide.
      ");
      }
      else
      {
      printf("La Pile a des elements.
      ");
      }

      for(i=0; i(-1); i--)
      {
      save = *(adresse_pile+i);
      printf("
      Element[%d] adresse %p valeur %d
      ", i, (*save).next, (*save).valeur);
      }

      putchar('
      ');
      putchar('
      ');

      for(i=0; i

    • @Street_Cyberman
      @Street_Cyberman 2 года назад

      pile.c
      #include
      #include
      #include "pile.h"
      type_pile* pileVierge(void)
      {
      return NULL;
      }
      //----------------------------------------------------------------
      boolean testPileVide (type_pile* element)
      {
      if(element == NULL)
      {
      return vrai;
      }
      return faux;
      }
      //----------------------------------------------------------------
      type_pile* ajoutElement(type_pile* element_precedant, int x)
      {
      type_pile* element_suivant = malloc(sizeof(type_pile));

      if(element_suivant == NULL)
      {
      printf("Probleme allocation dynamique");
      }


      (*element_suivant).valeur = x;
      (*element_suivant).next = element_precedant;

      return &(*element_suivant);
      }

    • @Street_Cyberman
      @Street_Cyberman 2 года назад

      pile.h
      #ifndef __PILE__H__
      #define __PILE__H__

      /* Type boolean */
      typedef enum
      {
      faux, //0
      vrai //1
      }boolean;

      /* Définition d'une pile */
      typedef struct element_pile
      {
      int valeur;
      struct element_pile* next; //comme le "type_pile*" sauf qu'on doit appeler "struct element_pile" dans la structure.

      }type_pile;

      /* Liste des prototypes des fonctions */

      type_pile* pileVierge(void);

      boolean testPileVide (type_pile* element);

      type_pile* ajoutElement(type_pile* element_precedant, int x);

      #endif

  • @Sow_sow2024
    @Sow_sow2024 4 года назад +1

    bonjour, comment vous faites pour ouvrir +sieurs fichiers en même temps sur une seule console?
    j'ai la peine d'ouvrir +sieurs fichiers sur linux.

    • @formation-video
      @formation-video  4 года назад

      Bonjour, comment ça ouvrir plusieurs fichiers sur la console ?

  • @yassineabdelmoula1375
    @yassineabdelmoula1375 6 лет назад +1

    Salut :) , est ce qu'il est possible que je puisse utiliser le nom de la pile "stackElement" dans les fonction et non pas "stack" , sinon pourquoi ? merci vraiment !

    • @formation-video
      @formation-video  6 лет назад

      Oui, tu peux bien nommer les choses comme tu le veux et adapter la structure comme tu préfères 🙂
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @sidahmedbenaissa4625
    @sidahmedbenaissa4625 4 года назад

    bonjour !
    quand vou avez definie la pile vous avez mis :
    typedef struct stackelement
    {
    int value ;
    struct stackelement *next ;
    }stackelement, *stack ;
    la question est pourquoi vous avez fait "struct stackelement *next ;" est pas directement "stackelement *next " ; vous avez deja dit dans les video precedentes que le decalaration precedente suffit .
    merci !

    • @formation-video
      @formation-video  4 года назад

      Bonjour, en testant avec le retrait du mot "struct", tu aurais tout de suite compris pourquoi je l'ai indiqué. Simplement parce qu'à ce stade (on définit la structure), l'alias StackElement = struct StackElement n'est pas encore valide et connu pour le compilateur 😉

  • @massyle5198
    @massyle5198 7 лет назад +1

    Salut, le compilateur me met ça quand je compile :
    C:\Users\massy\AppData\Local\Temp\cca3OPEP.o:piles.c:(.text+0xf): undefined refe
    rence to `new_stack'
    C:\Users\massy\AppData\Local\Temp\cca3OPEP.o:piles.c:(.text+0x33): undefined ref
    erence to `add_stack'
    C:\Users\massy\AppData\Local\Temp\cca3OPEP.o:piles.c:(.text+0x47): undefined ref
    erence to `add_stack'
    collect2.exe: error: ld returned 1 exit status
    Pourquoi donc ?

    • @formation-video
      @formation-video  7 лет назад

      Vérifie que tu as bien fait les includes comme dans la vidéo.
      Et de bien compiler en faisant -> gcc *.c -o prog

  • @malix31
    @malix31 6 лет назад +1

    Salut pour quoi tu n'as pas utililse la bibliotheque stdbool.h pour declarer le type booleen ? y a til une raison ?

    • @formation-video
      @formation-video  6 лет назад

      Bonjour, parce que sur les anciennes normes, elle n'existait pas, et comme je ne peux pas garantir que les internautes l'auront, en créant le type, je suis sûr que ça fonctionnera chez tout le monde (et ça permet au passage de voir une application de l'énumération) 😉
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @malix31
      @malix31 6 лет назад +1

      Cool merci pour l’information

    • @formation-video
      @formation-video  6 лет назад

      De rien
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @abdoulazizdiallo4513
    @abdoulazizdiallo4513 3 года назад

    Salut Jason, pourquoi dans l'enum l'ordre entre "true" et le "false" est important ? j'ai bcp peiné à retrouver cette erreur. En mettant l'inverse de ce que t'as fait je me retrouve avec un segmentation fault.
    Et un Grand merci, pour tes vidéos ça m'aide énormément.

    • @formation-video
      @formation-video  3 года назад +1

      Bonjour, parce que par défaut, une énumération est numérotée, en commançant par 0, puis 1, etc. Dans ce cas, si tu viens à attribuer true à 0 et false à 1, je pense que tu comprends le problème que ça entraîne 😉

    • @abdoulazizdiallo4513
      @abdoulazizdiallo4513 3 года назад

      Ohh oui compris maintenant merci 👍🏻.

    • @formation-video
      @formation-video  3 года назад

      De rien ;)

  • @lub8588
    @lub8588 2 года назад

    merci !

  • @marin9784
    @marin9784 3 года назад

    Bonjour Jason et merci pour la vidéo, elle est très clair mais j'avoue ne pas comprendre l'intérêt de cette notion ou sa puissance malgré l'exemple en fin de vidéo. Aurais tu des exemple d'utilisation concrets des piles s'il te plait ?

    • @formation-video
      @formation-video  3 года назад +1

      Bonjour, un exemple concret et facile à imagine : la pile d'un programme. Pour faire simple : chaque variable déclarée dans ton programme ou chaque appel de fonction est enregistré sur une pile. C'est la structure utilisée en mémoire (virtuelle) pour gérer ces données (j'en parlerai d'ailleurs dans ma playlist Architecture)

  • @oussamamahmoudi3369
    @oussamamahmoudi3369 6 лет назад +1

    Prof, a propos d'une fonction de trie d'une pile on va faire la comparaison entre value ET next et on les permutes. C'est possible sur une pile??

    • @formation-video
      @formation-video  6 лет назад

      Non, pas comme est conçue la structure. Une Pile n'est pas une structure conçue pour faire du tri, car on empile des valeurs par un côté, et on dépile par ce même côté. Si tu veux une structure triée, il faudra plutôt travailler avec une liste

    • @formation-video
      @formation-video  6 лет назад

      Mais oui sinon, dans le principe, il suffirait de permuter les valeurs de deux maillons de la Pile. Exemple st->value avec st->next->value

    • @oussamamahmoudi3369
      @oussamamahmoudi3369 6 лет назад +1

      FormationVidéo Merci j'ai compris prof, Sinon si j'ai bien compris le pointeur Des piles pointe sur L'element precedent et celui des files pointe sur le prochain non?? Pardon pour le derangement

    • @formation-video
      @formation-video  6 лет назад

      Non, la Pile et la File utilisent le même système de pointeur vers l'élément suivant. Ce qui change entre les deux, c'est l'ordre d'insertion et suppression d’élément :)

  • @yhanmob6122
    @yhanmob6122 4 года назад

    Merci pour la réponse précédente. Et à quel moment parle t-on de l’implémentation de l'assembleur et du compilateur?????

    • @formation-video
      @formation-video  4 года назад

      Pas dans ce cours, pas de rapport direct avec le C
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @ericleguen4718
    @ericleguen4718 2 месяца назад

    Bonjour, si je ne "veux pas" définir la structure avec typedef, mais simplement faire "struct StackElement",
    comment dois-je ré-écrire la suite du code, pour les deux fonctions new_stack() et is_empty_stack() ? Je m'y perds, c'est encore pour moi un vrai labyrinthe...
    Juste savoir ça, svp, ré-écrire sans typedef. Merci !

    • @formation-video
      @formation-video  2 месяца назад +1

      Bonjour, justement, "typedef" ne sert pas à définir de structure, mais à définir un alias.
      Donc, oui, tu peux évidemment faire sans : pastebin.com/2YKJyxPy

    • @ericleguen4718
      @ericleguen4718 2 месяца назад

      @@formation-video Merci ! Je retourne au combat 😁

  • @franckleuguem9169
    @franckleuguem9169 Год назад

    Bonsoir jason champagne merci pour la vidéo j'aimerai savoir pourquoi lorsqu'on crée une pile on utilise l'allocation dynamique d'après ce que j'ai compris on utilise l'allocation dynamique lorsqu'on veut utiliser une donnée dont la taille n'est pas connu par notre ordinateur j'ai un problème ici car lorsque qu'on crée un variable de type int on a pas besoin d'allocation mais lorsqu'on veut créer une pile on dit comme l'avez écrit stackelement *element; p = malloc(sizeof(element)); étant donné qu'on a crée la structure stackelement en mettant un typedef est ce que la machine n'a elle pas déjà réservée un espace pour les types stackelement? puisque dans la vidéo sur les structures on entrait les username, hp et mp des Player sans avoir à faire une allocation dynamique

    • @formation-video
      @formation-video  Год назад +1

      Bonjour, avec ces structures de données, nous manipulons des pointeurs vers ces dernières, d'où la nécessité d'allouer l'espace nécessaire, car non, l'ordinateur ne sait pas à l'avance quel espace occupe une Pile 👍
      Un exemple simple pour illustrer cela : pastebin.com/KvYK87mE

    • @franckleuguem9169
      @franckleuguem9169 Год назад

      @@formation-video ça veut donc dire que dès que l'on utilise un pointeur dont le type est défini par une structure, nous devons automatiquement faire une allocation dynamique?

    • @formation-video
      @formation-video  Год назад

      Non, pas si tu déclares un pointeur pointant vers une structure déjà déclarée : pastebin.com/Bgzr3LpD

  • @Valdez_1er
    @Valdez_1er Год назад

    Bonjour je comprends pas pourquoi apres avoir par exemple dépiler le 31, puis le 23 le programme dit que la pile est vide pourtant on a encore deux éléments

  • @yesno6042
    @yesno6042 6 лет назад +1

    Bonjour , svp dans popstack() vous avez fait un free(st) alors que vous n'avez pas déclaré de tableau dynamique dans cette fonction comment ça se fait ?

    • @formation-video
      @formation-video  6 лет назад

      Si tu as bien regardé le code, on travaille toujours sur la même Pile, donc celle que tu nous avons créé au départ (en faisant des allocations avec malloc).
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @axelb7921
    @axelb7921 7 лет назад +1

    Bonjour ! Je voulais savoir pourquoi l'invite de commande marque le message ci-après lorsque que je tente de compiler le programme "piles" ?
    Je suis sous windows 10, si cela peut bien évidemment aider ^^
    Merci de votre compréhension..
    C:\Users\blute\AppData\Local\Temp\cc7dOG3Y.o:main.c:(.text+0xf): undefined reference to `new_stack'
    C:\Users\blute\AppData\Local\Temp\cc7dOG3Y.o:main.c:(.text+0x1f): undefined reference to `is_empty_stack'
    collect2.exe: error: ld returned 1 exit status

    • @formation-video
      @formation-video  7 лет назад

      Bonsoir, dans l'archive fournie, tu as les fichiers "stack.c" et "stack.h".
      Tu peux donc créer un fichier "main.c" avec la fonction main() dedans (comme j'ai fait dans la vidéo). Toujours dans ce fichier, il ne faut pas oublier au début d'ajouter la ligne *#include** "stack.h"* pour inclure le fichier d'en-tête de la Pile, sinon les fonctions ne seront pas trouvées par le compilateur, d'où ton message d'erreur.

    • @axelb7921
      @axelb7921 7 лет назад +1

      Le problème persiste alors que la configuration est telle que tu l'énonce dans ton message...
      Toujours le même message...
      Y aurait t-il un autre moyen ?
      C:\Users\blute\Desktop\Codage\Piles>gcc main.c -o prog
      C:\Users\blute\AppData\Local\Temp\cctFSDxv.o:main.c:(.text+0xf): undefined reference to `new_stack'
      C:\Users\blute\AppData\Local\Temp\cctFSDxv.o:main.c:(.text+0x1f): undefined reference to `is_empty_stack'
      collect2.exe: error: ld returned 1 exit status

    • @axelb7921
      @axelb7921 7 лет назад +1

      Erreur d'étourderie... Je viens de trouver la subtilité ^^
      Très bonne soirée
      PS : Une excellent travail côté réalisation vidéo ainsi qu'une solide pédagogie à en faire trembler certains professeurs ^^
      Bonne continuation...

    • @formation-video
      @formation-video  7 лет назад

      Ah, bien que ce soit bon enfin de ton côté, bonne continuation :) !

  • @ThiernohadyBarry
    @ThiernohadyBarry 10 месяцев назад

    Bonjour j'ai un souci. Enfaite je sais comment créer une pile vérifier si elle est vide ou non ajouter une pile et tout.... Mais mon souci est que j'arrive pas à comprendre pourquoi est-ce que les données s'empilent ? Qu'est-ce qui est à la base de cela ? Est-ce à cause de la structure reccurcive. struct stackelement *next? Ou pas ? J'ai un souci là dessus et je voudrai vraiment éclaircir cela avant d'attaquer les autres structures... Merci de bien m'aider

    • @formation-video
      @formation-video  10 месяцев назад

      Bonjour, le schéma montré en vidéo explique le fonctionnement : chaque "maillon" de la pile est une structure composée d'une valeur (ici un entier) et d'un pointeur vers l'élément suivant. C'est l'usage du pointeur *next qui assure qui permet aux données de se suivre, et donc, de les empiler dans un ordre précis.

    • @ThiernohadyBarry
      @ThiernohadyBarry 10 месяцев назад

      @@formation-video D'accord je comprends merci !!

    • @formation-video
      @formation-video  10 месяцев назад

      👍

  • @christngoua4316
    @christngoua4316 5 лет назад

    J'aurai bien preferé que les noms de fonctions soient ecrient en angalais mais bon pas grave vous avez fait une bonne video.Merci pour votre aide

    • @formation-video
      @formation-video  5 лет назад +1

      J'écris personnellement mon code en anglais, et dans les vidéos, ça arrive que certaines ont des noms de variables/fonctions/classes en français. Mais c'est plutôt rare. Par contre tu ne dois pas parler de cette vidéo (sur les Piles) car les fonctions sont bien nommées en anglais justement.
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      🔵 Rejoindre FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

  • @zawette
    @zawette 7 лет назад +2

    Salut,
    je ne comprends pas pourquoi le fichier main.c fonctionne sans include stack.c
    c'est bien stack.c qui contient la fonction new_stack() n'est ce pas , stack.h ne contient que le prototype de la fonction ,
    de plus stack.c inclus stack.h , pourquoi pas ne pas l'inclure dans main.c au lieu de stack.h
    merci !

    • @formation-video
      @formation-video  7 лет назад

      Bonsoir,
      Un include permet d'ajouter un fichier d'en-tête, et un fichier ".c" n'en est pas un, il s'agit d'un fichier source. Donc, chaque fichier source doit inclure les fichiers d'en-tête et bibliothèques dont il a besoin.

    • @zawette
      @zawette 7 лет назад +1

      Merci pour la réponse rapide ! du coup il suffit d'avoir le fichier stack.c dans le même répertoire que main.c

    • @formation-video
      @formation-video  7 лет назад +1

      Voilà. Pour le compilateur, tant qu'il connaît l'existence des fonctions (via le prototype), il saura retrouver celle-ci pour compiler le tout comme il faut et te faire un exécutable fonctionnel :).
      Ne pas oublier que pour la machine, y'a pas de fonctions en réalité, ce ne sont que des adresses en mémoire, y compris pour les variables.

    • @zawette
      @zawette 7 лет назад +1

      FormationVidéo c'est compris merci!

    • @formation-video
      @formation-video  7 лет назад

      De rien :)

  • @sebastiendhellemmes3196
    @sebastiendhellemmes3196 6 лет назад +1

    Bonjour, j'aimerai savoir pourquoi mon programme ne fonctionne pas :
    main.c :
    #include
    #include
    #include "stack.h"
    int main(void)
    {
    Stack sta = newStack(); //on crée un pointeur nommé "sta" et de type Stack, qui prend la valeur du retour de la fonction newStack()
    if(isEmptyStack(sta))
    printf("La pile est vide.
    ");
    else
    printf("La pile n'est pas vide.
    ");
    printStack(sta);
    sta = pushStack(sta, 14);
    sta = pushStack(sta, 47);
    printStack(sta);

    if(isEmptyStack(sta))
    printf("La pile est vide.
    ");
    else
    printf("La pile n'est pas vide.
    ");
    sta = clearStack(sta);

    printStack(sta);

    if(isEmptyStack(sta))
    printf("La pile est vide.
    ");
    else
    printf("La pile n'est pas vide.
    ");
    return 0;
    }
    stack.c :
    #include
    #include
    #include "stack.h"
    Stack newStack(void)
    {
    return NULL;
    }
    Bool isEmptyStack(Stack st)
    {
    //si l'adresse st de type Stack est NULL, on retourne true (voir enum du fichier "stack.h") et donc on sort de la fonction, donc, si on ne l'a pas fait, on retournera false (pas besoin de else)
    if(st == NULL)
    return true;

    return false;
    }
    Stack pushStack(Stack st, int x)
    {
    StackElement *element;

    element = malloc(sizeof(*element)); //on crée un tableau avec l'allocution dynamique pour notre pile

    //si l'allocution a échoué, on quite le programme :
    if(element == NULL)
    {
    fprintf(stderr, "Probleme allocation dynamique !!!
    ");
    exit(EXIT_FAILURE);
    }

    //on met les valeurs en fonction des paramètres de la fonction :
    element->value = x;
    element->next = st;

    return element;
    }
    Stack clearStack(Stack st)
    {
    StackElement *element;

    //si la pile est déjà vide, on retourne le retour de newStack :
    if(isEmptyStack(st))
    return newStack();

    //on donne à element une valeur en fonction de st, qu'on libère ensuite :
    element = st->next;
    free(st);

    //on retourne le retour de clearStack en fonction de element, donc on va réexecuter la fonction jusqu'à ce que la pile soit vide, auquel cas il retournera le retour newStack() (voir plus haut) :
    return clearStack(element);
    }
    void printStack(Stack st)
    {
    if(isEmptyStack(st))
    {
    printf("Rien a afficher, la pile est vide.
    ");
    return; //on sort de la fonction sans retourner de valeur car la fonction est de type void
    }

    while(!isEmptyStack(st))
    {
    printf("[%d]
    ", st->value);
    st = st->next;
    }
    }
    stack.h :
    #ifndef __STACK__H__
    #define __STACK__H__
    // --§__création d'un type booléen__§--
    typedef enum
    {
    false, //0
    true //1
    }Bool;


    // --§__définition d'une pile__§--
    typedef struct StackElement
    {
    int value;
    struct stackElement *next;
    }StackElement, *Stack;


    // --§__prototypes des fonctions__§--
    Stack newStack(void); //cette fonction retourne une adresse de type Stack (voir structure)
    Bool isEmptyStack(Stack st);
    void printStack(Stack st);
    Stack pushStack(Stack st, int x);
    Stack clearStack(Stack st);

    #endif
    Merci beaucoup !

    • @formation-video
      @formation-video  6 лет назад +1

      Bonjour, pour plus de lisibilité, peux-tu partager ton code via pastebin ?
      Sinon, relis d'abord ton code, car je vois rapidement pas mal d'erreurs (par exemple dans la structure, tu as noté "stackElement" au lieu de "StackElement". Les minuscules/majuscules sont importantes.
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

    • @sebastiendhellemmes3196
      @sebastiendhellemmes3196 6 лет назад +1

      Merci beaucoup, mon code fonctionne très bien, et vos vidéos sont géniales !

    • @formation-video
      @formation-video  6 лет назад

      Parfait 😉 !
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @nicolaslecas8131
    @nicolaslecas8131 4 года назад

    Merci super tuto comme d'hab ! J'ai une question, peut-on changer tous les "StackElement *element" (dans les fonctions pop_stack ou push_stack) par des "Stack element" ? en fait j'ai du mal à comprendre la fin de ta déclaration de structure, quand tu écris "StackElement, *Stack"

    • @formation-video
      @formation-video  4 года назад +1

      Le meilleur moyen de le savoir, c'est de le tester, alors fais et tu verras quel comportement cela engendre au niveau de ton programme 👍

    • @nicolaslecas8131
      @nicolaslecas8131 4 года назад

      @@formation-video je viens de verifier et ca marche en faisant ce remplacement, ca me semble plus clair, je l'ecrirai donc comme ca maintenant, merci beaucoup ! (Neanmoins je ne comprends pas l'etoile devant le Stack a la fin de la declaration de la structure, en essayant de l'enlever j'ai des erreurs a la pelle)

    • @formation-video
      @formation-video  4 года назад +1

      Parce que c'est une notation avec pointeur, donc forcément, si tu l'enlèves... 😉

  • @maelchemeque2258
    @maelchemeque2258 4 года назад

    Si j'ai bien compris la notation *Stack correspond à l'adresse du premier élément de la pile, qu'on peut simplifier par la pile elle même ?

    • @formation-video
      @formation-video  4 года назад

      Non, la notation Stack* (et pas *Stack) indique un pointeur vers une structure de type Stack

    • @maelchemeque2258
      @maelchemeque2258 4 года назад

      Ah oui en fait on note StackElement * Stack j'avais pas bien compris que la notation était typedef struct StackElement* Stack

    • @maelchemeque2258
      @maelchemeque2258 4 года назад

      Je voulais parler de la notation Stack du coup

    • @formation-video
      @formation-video  4 года назад +1

      OK 👍

  • @aliyounsi6567
    @aliyounsi6567 7 лет назад +1

    Bonjour !
    On nous a donné un projet sur les piles et les files :
    Comment implémenter une pile a l'aide de deux files ?
    Comment implémenter une file a l'aide de deux piles ?
    J'ai aucun problème sur tout ce qui concerne le code ! Ce que je comprends pas c'est la présentation (le schéma ) car je vois que c'est inutiles !
    Pouvez vous m'expliquer l'implémentation svp !
    Cordialement

    • @formation-video
      @formation-video  7 лет назад

      Coucou,
      C'est ton projet qui te demande précisément d'implémenter une Pile avec 2 Files, et une File avec 2 Piles ?

    • @aliyounsi6567
      @aliyounsi6567 7 лет назад +1

      FormationVidéo ouais !

    • @formation-video
      @formation-video  7 лет назад

      C'est étrange ce que l'on te demande sachant que les deux structures ont un fonctionnement complètement différent.
      Pour une Pile, la dernière valeur insérée est la première que l'on peut retirer.
      Pour une File, la dernière valeur insérée est la dernière que l'on pourra retirer.

  • @tassnimtahri47
    @tassnimtahri47 2 года назад

    is it possible to add an element in a specific position ??

    • @formation-video
      @formation-video  2 года назад +1

      No, the stack structure must respect the LIFO (Last In First Out) principle. For the insertion of elements at a specific position, we generally use a list 👍

  • @romaincolonnadistria7025
    @romaincolonnadistria7025 5 лет назад

    Salut, y'a un petit point que j'arrive pas à éclaircir, pourquoi rajouter "*Stack" a la définition de la struct à la place de "Stack" ? On ne peux pas juste la déclarer comme pointeur à la création seulement comme ca "Stack *stack = ... " ?

    • @formation-video
      @formation-video  5 лет назад +1

      Je l'avais expliqué dans les vidéos, c'est une manière de pouvoir employer la structure en masquant le pointeur. Je l'avais fait pour montrer que c'était possible (en faisant différemment sur d'autres structures de données de la formation pour que vous ayez plusieurs exemples d'implémentation).
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      💙 Si ce n'est pas encore fait, n'hésite pas à t'abonner à la chaîne
      ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8

  • @Turkish_coffee_42
    @Turkish_coffee_42 4 года назад

    pourquoi certaines fonctions ne prennent elles pas de double pointeurs, dans cetrains cas, je pense qu'il devrait y avoir des problemes des lors que nous quittons les fonction telle que push stack dans le main non ?

    • @formation-video
      @formation-video  4 года назад

      Tout cela vient de la manière dont a été définie la structure de la Pile. En revanche, tu verras que pour d'autres structures, j'ai fait une implémentation différente, histoire de montrer plusieurs manières de faire, et ce que cela change sur la syntaxe 😉
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @ghadajouini8181
    @ghadajouini8181 7 лет назад +1

    Salut , merci pour cette super video .
    Je travaille avec le code::Blocks et j'ai essayé mais dans le terminal il m'a dit que la pile est toujours vide malgrés que j'ai fais l'ajout des élements à l'aide de la fonction "push_Stack" j'ai pas compris pourquoi malgrés que j'ai fait aucun erreur dans le code .merci de me répondre !

    • @formation-video
      @formation-video  7 лет назад

      Bonjour, pourrais-tu me montrer le code complet de ta fonction "push_stack" et comment tu appelles celle-ci dans ta fonction main() ?

    • @ghadajouini8181
      @ghadajouini8181 7 лет назад +1

      bonjour , celui ci est la fonction "push_stack" :
      Stack push_Stack (Stack st , int x )
      {
      StackElement *element ;
      element = malloc (sizeof(*element)) ;
      if (element ==NULL)
      {
      printf("problème allocation dynamique .
      ");
      }
      element->value=x ;
      element->next =st ;
      return element ;
      }
      et dans la fonction main :
      int main(void)
      {
      Stack sta=new_Stack() ;
      print_Stack(sta);
      printf("
      -----------------------------

      ");
      sta = push_Stack(sta,13);
      sta = push_Stack(sta,26);
      sta = push_Stack(sta,80);
      print_Stack(sta);
      return 0 ;
      }

    • @formation-video
      @formation-video  7 лет назад

      OK, et donc avec ce code, l'ajout des éléments n'est pas fait tu me dis ? Tout semble correct pourtant. Vérifie bien en revanche que tout est bon sur le nommage des fonctions, je vois par exemple que tu as mis une majuscule sur le "S" de push_Stack, ou print_Stack, donc vérifier que c'est identique partout :)
      Après si ton code compile, c'est qu'il n'y a pas d'erreurs

  • @connexionvitale
    @connexionvitale 6 лет назад +1

    Je reprends on code pas à pas pour en comprendre la logique, après la création de la fonction qui libère la pile, j'ai 2 erreurs répétées plusieurs fois dans la console :
    dans le "main" : assigment makes pointer from integer without a cast; par exemple ici : pile1 = ajoute_element_pile(pile1,14);
    puis,
    sur toutes mes fonctions, par exemple : sur "pile.c" et "main.c" :multiple definition of "nouvelle_pile"
    Il me semble que mon code répète bien ton code même s'il y a d'autres noms... ?!

    • @formation-video
      @formation-video  6 лет назад

      A priori, tu dois avoir des fonctions définies deux fois, et certainement d'autres erreurs dans ton code pour avoir ces messages là. Relis bien ton code, et compare avec le mien pour identifier les erreurs éventuelles ;)
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- Jason CHAMPAGNE - jasonchampagne.fr
      +---------------------------------------------------------------------------------------------------------------------------------------------+
      |- COUCOU, TU VEUX :
      |--- Nous rejoindre sur Discord ? discord.me/jasonchampagne
      |--- Me voir en direct sur Twitch ? www.twitch.tv/jachampagne
      |--- T'abonner à mon autre chaîne RUclips ? ruclips.net/user/jasonchampagne
      |--- Me follow sur Twitter ? twitter.com/jachampagne8
      |--- Liker la page Facebook ? facebook.com/jachampagne8
      |--- Me follow sur Insta ? instagram.com/jachampagne8/
      |--- M'ajouter sur Snapchat ? www.snapchat.com/add/jachampagne8
      +---------------------------------------------------------------------------------------------------------------------------------------------+

  • @lamassonnerie5050
    @lamassonnerie5050 4 года назад

    bjr. mrc pour cette vidéo (même si sa fais déjà 2ans). Pour être sur d'avoir bien compris, dans la fonction main, si je fait une initialisation de ma piles en fesant Stack *stack = new_stack(); sa ne marchera pas car stack est déjà un pointeur en fesant Stack stack; ?

    • @formation-video
      @formation-video  4 года назад

      Bonjour, le mieux est que tu testes pour voir ce que te donnera le compilateur ;)
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @MamaNdiaye-pj1xr
    @MamaNdiaye-pj1xr 11 месяцев назад

    Bonjour j'ai eu un problème apres avoir la compilation quand vous avez compiler et obtenu : la pile est vide
    La pile a des éléments
    La pile est vide
    Et bien là bas moi je n'ai obtenu qu'une seul réponse qui dit la pile est vide et pourtant j'ai mis les même code que vous

    • @formation-video
      @formation-video  11 месяцев назад

      Bonjour, si ton code était identique au mien, tu te doutes que tu aurais forcément le même résultat à l'arrivée. Vérifie ce que tu as écrit, tu dois avoir des erreurs quelque part 👍

    • @MamaNdiaye-pj1xr
      @MamaNdiaye-pj1xr 11 месяцев назад

      Ok

  • @supermariou4765
    @supermariou4765 7 лет назад +1

    bonjour sa sera quand pour la SDL2 :'( et merci pour ce que vous faite

    • @formation-video
      @formation-video  7 лет назад +1

      Bonsoir, la prochaine vidéo (celle après les Graphes) sera sur la SDL, donc la prochaine à venir =)

    • @supermariou4765
      @supermariou4765 7 лет назад +1

      FormationVidéo ah merci c'est cool 🤗

    • @formation-video
      @formation-video  7 лет назад

      :)

  • @tobidegnon4409
    @tobidegnon4409 7 лет назад +1

    Il y a une chose que je ne comprend pas le type "stack" qu'on met avant la fonction push_stack c'est le type de retour n'est ce pas,alors pourquoi vous n'avez rien retourner et pourtant ça marche mais quand moi je fait ceci:
    stack push_stack(stack st,int x)
    {
    stackelement* element=(stackelement*)malloc(sizeof(stackelement));
    if(element==NULL)
    {
    printf("probleme allocation memoire
    ");
    exit(1);
    }
    element->value=x;
    element->next=st;
    return st;
    }
    ça ne marche pas alors que je retourne bien la pile st,
    ça me met que la pile est vide a chaque fois quand j'exécute
    Merci bien de me répondre

    • @formation-video
      @formation-video  7 лет назад +1

      Bonjour, tu as du mal lire le code, car je retourne pourtant bien une pile, en faisant le *return element*.

    • @tobidegnon4409
      @tobidegnon4409 7 лет назад +1

      vous avez fait un return element,je vais essayer alors,mais je comprends quand même pas pourquoi return st ne marche pas

    • @tobidegnon4409
      @tobidegnon4409 7 лет назад +1

      et selon moi on devait retourné la pile st et non element,c'est la raison pour laquelle on fait sta=push_stack(sta,13)
      la fonction retourne un stack (une pile) alors pourquoi ça marche pas avec st

    • @formation-video
      @formation-video  7 лет назад +1

      Relis bien le code de la fonction. On créée une variable element, qui sera la future pile en fait. Sur la première case, on met la valeur passée à la fonction, et à la suite, on met l'ancienne pile.
      Donc forcément, si tu retournes "st", cette Pile au début est vide donc tu retournes à chaque fois une Pile sur laquelle rien a été ajouté, voilà pourquoi c'est toujours vide.
      Si le code est pas assez clair pour toi, remplace le nom *element* par *newStack* et tu comprendras mieux :).

    • @tobidegnon4409
      @tobidegnon4409 7 лет назад +1

      merci c'est plus clair maintenant

  • @AlhussayniToure
    @AlhussayniToure 11 месяцев назад

    J' aime vraiment les vidéos mais je n'arrive pas à accéder au code laisser en description

    • @formation-video
      @formation-video  11 месяцев назад

      Via les liens dans la description de la vidéo, tu arrives sur des pages de mon GitHub. Sur celles-ci, tu as sur la droite une icône pour télécharger l'archive : imgur.com/LqiOUki

  • @lagiti834
    @lagiti834 6 лет назад +1

    Dans clear_stack(Stack st), je me demande et si on avait placé free(st) avant element= st ->next, est-ce qu'il efface toute les piles.?

    • @formation-video
      @formation-video  6 лет назад +1

      Non, ça ne supprimerait que l'élément courant de la Pile (le premier en l'occurence). Oublie pas qu'on a fait un malloc() à chaque fois qu'on ajoute un élément à la Pile. Donc il faut autant de free()

  • @ericleguen4718
    @ericleguen4718 Месяц назад

    Bonne année à toutes et tous. Je n'arrive pas à coder une fonction qui regardera un élément en particulier, et qui écrira :
    "L'élément situé à la 3 ème position (dans mon exemple) a comme ' int value' : (value associée à cette 'position').
    J'arrive à une usine à gaz du genre st->next->next->next...etc -> next->value. pour atterrir enfin là où je veux. C'est naze...
    Comment faire ? Je ne vois pas.
    Merci !😀

    • @formation-video
      @formation-video  Месяц назад +1

      Tu peux utiliser un simple compteur partant à 1 (comme on pointe au départ sur le début de la Pile) et tant que ce compteur n'a pas atteint l'indice spécifié, de déplacer le pointeur sur la pile.
      De là, tu pointeras alors sur le bon élément, et tu n'auras qu'à afficher le contenu de st->value 👍
      C'est le même principe de parcours que pour l'affichage ou le comptage du nombre d'éléments, sauf que le point d'arrêt diffère, évidemment.

    • @ericleguen4718
      @ericleguen4718 Месяц назад

      @@formation-video Je parcours la pile depuis son haut, vers son bas, en me déplaçant par st = st->next successifs, jusque par exemple le '3ème étage'. Et je récupère sa valeur ok. Ça, je peux faire parce que je suis allé d'abord calculer la hauteur de pile, pour décrémenter un compteur qui m'amène là où je veux. (J'ai réussi cela)
      Mais je ne sais pas 'monter' du bas vers le haut de pile... Si c'est une meilleure solution, 'remonter dans la pile', comment faire ?
      (Si j'ai bien suivi...) Merci ! 😁

    • @formation-video
      @formation-video  28 дней назад +1

      Tu ne peux justement pas parcourir une pile à l'envers.
      Donc, il va falloir "compter à l'envers" si tu veux l'élément en Nième position (comme on a le nombre d'éléments qu'elle contient, c'est assez facile à mettre en place).

  • @raphaeltouitou9686
    @raphaeltouitou9686 7 лет назад +1

    comment tu fais pour copier coller juste en cliquant ?
    sinon super video comme toujours

    • @formation-video
      @formation-video  7 лет назад

      C'est ça, c'est une fonction standard de Sublime Text, bien pratique =)

  • @ralaitafikaman6784
    @ralaitafikaman6784 2 года назад

    Bonjours Jason très bonne vidéo mais je me demandais qu'elle est la différence entre = et ->

    • @formation-video
      @formation-video  2 года назад

      Bonjour : = est l'opérateur d'affectation tandis que la -> est l'opérateur d'accès à une donnée membre pour un pointeur vers une structure

  • @phillipeasgb5369
    @phillipeasgb5369 6 лет назад +1

    J'aimerais avoir un eclaircicement sur un truck ou deux :
    Comment on reconnais une pile vide ? , le fait de dire vide ne veut pas dire que ca n'a pas de valeur sinon on aurais dit st->value , j'ai aussi un probleme des structurese et enumeration, ces derniers ne fonctionne pas , et si j'avais envie d'afficher le premier element enregistrer de la pile c'est a dire je fais commet ?

    • @formation-video
      @formation-video  6 лет назад

      Bonjour, tout dépend de comment tu vas représenter ta structure. Dans mon implémentation, une pile est une Pile qui n'est rien, donc la valeur NULL.
      Ensuite, le principe de la Pile n'est pas censé permettre de récupérer le premier élément empilé, mais le sommet de celle-ci. Après tu peux créer une fonction pour le faire, mais ta Pile deviendrait plus une sorte de Liste ;)

    • @phillipeasgb5369
      @phillipeasgb5369 6 лет назад +1

      ok et quel est l'interet de faire un malloc au niveau de l'ajout
      d'un element

    • @phillipeasgb5369
      @phillipeasgb5369 6 лет назад +1

      je veux aussi connaitre la difference entre stack et stackelement

    • @formation-video
      @formation-video  6 лет назад

      Et bien d'indiquer à ton ordinateur quelle place il doit réserver en mémoire. Car il sait allouer seul un entier, un caractère, un flottant, mais un élément de Pile, non

    • @formation-video
      @formation-video  6 лет назад

      Stack est l'écriture qui va masquer le pointeur, StackElement celle qui ne le masque pas

  • @totoboubou3387
    @totoboubou3387 6 лет назад +1

    bonjour pourquoi avoir écrit "st" dans vos programmes? que signifie t-il?

    • @formation-video
      @formation-video  6 лет назад

      Bonsoir, "st" est simplement un nom que je donne à ma variable pour représenter la Pile. Mais j'aurais pu évidemment lui donner n'importe quel nom

    • @totoboubou3387
      @totoboubou3387 6 лет назад +1

      +FormationVidéo merci!

    • @formation-video
      @formation-video  6 лет назад

      :)

  • @jarvisjamarjarvisonlamar5151
    @jarvisjamarjarvisonlamar5151 4 года назад

    Bonjour merci pour la formation
    just une question pour m'éclaircir les idées un peut plus
    on aurait pas pu faire : sta = new_stack();
    pour vider la pile ?
    et merci encore

    • @formation-video
      @formation-video  4 года назад +1

      Et que fais-tu de tout ce qui a été alloué en mémoire (et ne sera donc pas libéré = fuite mémoire) ? 😉
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

    • @jarvisjamarjarvisonlamar5151
      @jarvisjamarjarvisonlamar5151 4 года назад

      @@formation-video Ahhhhh c'est vrai, merci mec ^^

  • @Merlin_G
    @Merlin_G 4 года назад

    Dans ton archive d'entiers il manque un ; après int value dans la définition d'une pile et tu as laissé Player dans les paramètres de pushStack
    Et quand j'inclu stack.h dans mon main ça marche pas alors que quand je fais include stack.c ça marche, je pense que c'est parce que je fais
    gcc main.c -o prog
    et que tu fais
    gcc *.c -o prog
    du coup j'imagine qu'il pack les 2 .c dans le prog.exe ?

    • @formation-video
      @formation-video  4 года назад

      Merci de l'avoir signalé, j'ai mis à jour l'archive et les liens sur la vidéo 👍
      Et oui, il faut bien compiler tous les fichiers source, donc -> gcc *.c -o prog (ou éventuellement : gcc stack.c main.c -o prog)
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

  • @atlanticpopculture8673
    @atlanticpopculture8673 2 года назад

    Salut y-t-il eu des changements concernant l’affichage de pile ? , ça ne semble pas marcher pour moi

    • @formation-video
      @formation-video  2 года назад +1

      Bonjour, non, pourquoi y'aurait-il un changement ? Si cela ne fonctionne pas, c'est que tu as une erreur dans ton code.

    • @atlanticpopculture8673
      @atlanticpopculture8673 2 года назад

      Tu avais bien raison mon erreur était dû au push_stack Plutôt. Merci ✌️

    • @formation-video
      @formation-video  2 года назад

      Impeccable 👍

  • @youssef_plaisir2018
    @youssef_plaisir2018 4 года назад

    bonjour;
    pourquoi l'or de la définition d'une pile le pointeur *next est de type struct StackElement ?

    • @formation-video
      @formation-video  4 года назад

      Parce qu'on aurait pas notre structure sinon, où chaque élément est "rattaché" à un autre.
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖

    • @youssef_plaisir2018
      @youssef_plaisir2018 4 года назад

      ​@@formation-video​
      bonjour;
      j'ai pas bien compris votre réponse; le ptr *next doit contenir une adresse(pourquoi le type struct StackElement et non type int)

    • @formation-video
      @formation-video  4 года назад

      Parce que "next" est un pointeur vers StackElement, pas un pointeur sur "int"
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
      ◾ MERCI DE TON SOUTIEN ! 🔻
      ◾ Pas encore abonné(e) ? N'hésite pas à le faire 💙
      ◾ Soutenir FormationVidéo : bit.ly/2L0xNXA
      ◾ Site web : jasonchampagne.fr
      ◾ Discord : discord.me/jasonchampagne
      ◾ Twitch : www.twitch.tv/jachampagne
      ◾ RUclips (personnel) : ruclips.net/user/jasonchampagne
      ◾ Twitter : twitter.com/jachampagne8
      ◾ Facebook : facebook.com/jachampagne8
      ◾ Instagram : instagram.com/jachampagne8
      ◾ Snapchat : www.snapchat.com/add/jachampagne8
      ◼ ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖