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

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

C Discussion :

fonction langage C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Par défaut fonction langage C
    bonjour,
    j'aimerais écrire une fonction ordre(int t[], int size, int val)
    t[] est un tableau trié en ordre croissant, la taille du tableau, et un entier val qui sera mis à la bonne place dans le tableau (dans l'ordre croissant).
    Mais je ne vois pas comment écrire cette fonction, est-ce que quelqu'un saurait l'écrire, svp ?
    merci.

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Il faut identifier où se trouve ton problème :
    • Quel est l'algorithme à implémenter
    • Tu as l'algorithme, mais tu ne sais pas comment l'implémenter
    • Tu as fait une première implémentation, mais elle ne donne pas le résultat escompté


    Si c'est le premier, il faut faire déplacer ce thread vers le forum algorithme. Si c'est le second, il faut lire un cours de C, et si c'est le dernier, il faut poster un code minimal, compilable, et reproduisant ton problème.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 80
    Par défaut
    Bonsoir space_56;


    Ecoutes attentivement les conseils d'Emmanuel Delahaye c'est un Maestro en programmation .
    De plus il est trés pédagogue , il lis le probléme , il fait une analyse , ensuite il réponds avec une maitrise parfaite .
    Suivre les conseils d'Emmanuel Delahaye c'est d'étre pérsuadé d'étre sur la bon voie en programmation .

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Par défaut
    est-ce qu'on est obligé d'ultiliser malloc et realloc pour ajouter une case au tableau, y-a-t-il une autre solution ?

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par space_56 Voir le message
    est-ce qu'on est obligé d'ultiliser malloc et realloc pour ajouter une case au tableau, y-a-t-il une autre solution ?
    On peut avoir prévu le coup et avoir un tableau plus grand dès le départ... Dans ce cas, inutile de l'agrandir...

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Fred.77 Voir le message
    Bonsoir space_56;


    Ecoutes attentivement les conseils d'Emmanuel Delahaye c'est un Maestro en programmation .
    De plus il est trés pédagogue , il lis le probléme , il fait une analyse , ensuite il réponds avec une maitrise parfaite .
    Suivre les conseils d'Emmanuel Delahaye c'est d'étre pérsuadé d'étre sur la bon voie en programmation .
    Oui, enfin, je fais aussi des erreurs...

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par space_56 Voir le message
    j'aimerais écrire une fonction ordre(int t[], int size, int val)
    t[] est un tableau trié en ordre croissant, la taille du tableau, et un entier val qui sera mis à la bonne place dans le tableau (dans l'ordre croissant).
    Mais je ne vois pas comment écrire cette fonction, est-ce que quelqu'un saurait l'écrire, svp ?
    Bah, pas exemple, tu agrandis le tableau de une case, tu le mets au bout et tu retries...

    Pour trier en C, on utilise qsort()...

    Il y d'autres possibilités comme agrandir, déterminer la place, déplacer la fin de une case avec memmove()...

    On peut aussi tout recopier dans un tableau plus grand en pensant à 'insérer' la nouvelle donnée au bon endroit...

    C'est pas forcément très rapide. Une structure de données plus évoluée comme une liste chainée permet ce genre d'opération plus efficacement...

    Nota : pour pouvoir être agrandi (realloc()) le tableau doit obligatoirement avoir été créé avec malloc() ou ses frères...

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Par défaut
    oui, mais comment fait-on pour agrandir le tableau d'une case, est-ce que vous pouvez m'écrire un exemple de code avec le malloc, svp ?
    merci.

  9. #9
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    int main( int argc, char** argv )
    {
       /* allocation d un tableau de nb_elem, effectivement nb_elem vient de nulpart, mais c est pas la question */
       int* tab = malloc( nb_elem * sizeof( int ) ); 
       /* faudrait tester le retour du malloc, une allocation peut echouée */
       int* tmp_tab = 0;
     
       /* je veux plus d elements dans mon tableau, ici 1 de plus */
       ++nb_elem;
     
       /* pour ca on appel realloc = reallocation ! 
       ** mais attention on recupere le pointeur retour dans une varaible temporaire
       ** car en cas d echec on ne veux pas perdre le tableau original
       */
       tmp_tab = realloc( tab, nb_elem * sizeof( int ) );
     
       /* si la reallocation c est bien passe on affecte la valeur du pointeur
       ** dans tab
       */
       if( tmp_tab != 0 )
       {
          tab = tmp_tab;
          /* puis ici faire le reste */
       }
     
       return 0;
    }

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Par défaut
    on écrit
    int ordre(int *tab, int size, int val)
    ou
    ordre(int tab[], int size, int val)
    est-ce que cela revient au même ?
    merci.

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par space_56 Voir le message
    on écrit
    int ordre(int *tab, int size, int val)
    ou
    ordre(int tab[], int size, int val)
    est-ce que cela revient au même ?
    Oui. Ce sont des notions élémentaires du C... Tu n'as pas de livre ?

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par space_56 Voir le message
    oui, mais comment fait-on pour agrandir le tableau d'une case, est-ce que vous pouvez m'écrire un exemple de code avec le malloc,
    Ton livre de C explique comment faire l'allocation dynamique... On ne peut pas tout rééxpliquer à chaque fois... Il y a aussi des tutoriels et des références de livres sur ce site (et le mien)...

    J'ai peur que si tu n'ai pas les bases, ceci :

    http://emmanuel-delahaye.developpez....tes.htm#malloc
    http://emmanuel-delahaye.developpez....es.htm#realloc

    ne te soit inutile...

Discussions similaires

  1. [langage] problème avec fonction read
    Par domidum54 dans le forum Langage
    Réponses: 2
    Dernier message: 30/03/2004, 20h42
  2. Réponses: 2
    Dernier message: 30/03/2004, 11h31
  3. [langage] Creer une fonction qui met en majuscule ?
    Par Cyber@l dans le forum Langage
    Réponses: 6
    Dernier message: 04/12/2003, 18h44
  4. [langage] fonction sleep + probleme fenetre dos
    Par yokito dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2003, 19h46
  5. Réponses: 3
    Dernier message: 02/09/2002, 18h49

Partager

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