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 comparatrice en C


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut fonction comparatrice en C
    voila j'ai besoin d'aide

    Pour faire simple, je voudrais qu'une fonction me donne la plus petite valeur parmi plusieurs valeurs entiere, sans prendre zero ou les negatifs. Est-ce qu'une fonction comme ça existe?

    j'ai trop besoin d'aide SVP !!!!!

  2. #2
    Membre confirmé Avatar de landryx
    Inscrit en
    Décembre 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 145
    Par défaut
    Pour faire simple tu peux la creer toi meme(c assez simple)!!je ne pense qu'une fontion comme celle la existe en C !!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    si tu penses que c'est simple pourrais tu me la faire, je suis noob en programmation, et c'est pour un projet... dans 2 jours
    on et trois a plancher dessus depuis 4 heures

    STP aide nous

    merci d'avance

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Par défaut
    Et vous en êtes ou?
    Vous avez au moins une idée d'algorithme?
    Je veux bien t'aider mais il faudrait que tu commences par montrer qqchose

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    poste ton code d'abord !

    algo :
    boucle sur les indices
    si la valeur est <=0 passer à la suivante
    si la valeur est > à la valeur déjà enregistrée prendre cette valeur comme minimum
    sinon passer à la suivente

    une boucle for
    2 test if then.

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par adrick
    si tu penses que c'est simple pourrais tu me la faire, je suis noob en programmation, et c'est pour un projet... dans 2 jours
    on et trois a plancher dessus depuis 4 heures

    STP aide nous

    merci d'avance

    Vous êtes à 3 dessus, vous bloquez sur quoi exactement dans cette fonction ?

    Essaye d'écrire une fonction de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*Function: pluspetite
      Retourne l'entier le plus petit du tableau de taille taille.
    */
    int pluspetite(int* tableau, size_t taille);
     
    Ou :
     
    int pluspetite(int tableau[], size_t taille);
    Sache qu'on est là pour t'aider si tu as des problèmes, mais en aucun cas pour te faire tes exercices. Si votre professeur vous l'a donné, je ne pense pas qu'il souhaitiait que vous le donniez à faire à quelqu'un d'autre.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Par défaut
    Vous passez comment les valeurs entieres?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    je te donne notre truc qui marche pas du tout c'est un projet de combat d'un heroic fantasy en console dos:

    i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    nt magie (int attaquant,int life)
    {
     int count5=0;
     int cible2=0;
     
    for (count5=0;count5<=3;count5++)
    {
        if (fighter_user[count5].PV<=fighter_user[count5+1].PV)
        { if (fighter_user[cible2].PV<=fighter_user[count5].PV)cible2=cible2;
          if (fighter_user[cible2].PV>fighter_user[count5].PV)
           {
            if (fighter_user[count5].PV>0) cible2=count5;
            else cible2=cible2;
           }
        }
        if (fighter_user[count5].PV<=fighter_user[count5+1].PV)
        { if (fighter_user[cible2].PV<=fighter_user[count5+1].PV)cible2=cible2;
          if (fighter_user[cible2].PV>fighter_user[count5+1].PV)
           {
            if (fighter_user[count5+1].PV>0) cible2=count5;
            else cible2=cible2;
           }
        }
    }
     
              fighter_user[cible2].PV=fighter_user[cible2].PV/2;
              fighter_CPU[attaquant].PM=0;
              printf("%s de l'equipe adverse lance 'DEMI' sur %s\n",fighter_CPU[attaquant].nom,fighter_user[cible2].nom);
              printf("%s a maintenant %d PV\n\n", fighter_user[cible2].nom,fighter_user[cible2].PV);
              if (fighter_user[cible2].PV <=0) 
              {
               fighter_user[cible2].PV=0;
               life = life -1;
              }
              system("pause");
              return life;
    }

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    pour l'heure les cour sont fini de regarderais demain matin 8h30
    et peutetre ce soir a 20h00


    en tout cas merci pour vos reponses deja il faut vraiment qu'on y arrive

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Par défaut
    Et c'est sensé faire quoi ce code?
    les variables fighter_user/cpu sont en globales?

    pour une fonction qui renvoie le plus petit entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int fonction pluspetit (int *tab, int size)
    {
      int tmp;
      int ret;
     
      for (tmp = 1, ret = tab[0]; tmp < size; tmp ++)
      {
         if (tab[tmp] > 0 && tab[tmp] < ret)
          ret = tab[tmp];
      }
     
      return ret;
    }

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Par défaut
    alors pour repondre qu question oui les tableau sont en global dans un fichier.h
    pour repondre a millie ce n'est pas un exercise c'est un projet et c'est bien une aide que je demande le code source que je trouverais je l'adapterais c'est juste que je n'ai plus d'idée poour ne pas oublier de condition sachant que l'on veux la plus petite valeur sauf les negatif et le 0 qui ne doivent pas etre prit en compte

    deja merci pour vos reponse je les analyserais demain avec mon groupe pour en tirer une solution

    si vous avez d'autre idée n'hesitez pas !

  12. #12
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,
    Citation Envoyé par frenchi
    Et c'est sensé faire quoi ce code?
    les variables fighter_user/cpu sont en globales?

    pour une fonction qui renvoie le plus petit entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int fonction pluspetit (int *tab, int size)
    {
      int tmp;
      int ret;
     
      for (tmp = 1, ret = tab[0]; tmp < size; tmp ++)
      {
         if (tab[tmp] > 0 && tab[tmp] < ret)
          ret = tab[tmp];
      }
     
      return ret;
    }
    ton code est inutilement compliqué, surtout avec ce que j'ai le plus en horreur, l'utilisation de plusieurs variables dans la déclaration d'une seule et meme boucle.

    D'autant plus que rien ne t'empeche d'initialiser ret (dans ce cas) directement à la valeur du premier élément du tableau, plutot que de commencer par l'initialiser à 0

    En plus, du fait que les entiers sont exclusivement positifs (mis dans l'énoncé) et que l'index d'un tableau l'est également , il y a tout intérêt à utiliser des entiers non signés (cela permet de supprimer un warning, quand on utilise des options de compilations contraignantes)

    Le plus facile, c'est donc:
    1. d'initialiser dés le départ la variable temporaire à la valeur du premier élément du tableau, mais pas dans la boucle
    2. d'effectuer la boucle et le test en se basant sur cette valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    /* la valeur de retour sera d'office comprise entre 0 et le maximum pour les 
        int... autant renvoyer un entier non signé ;) 
     
        Mais cela sous entend que toute la gestion en amont se ferait aussi avec 
        des entiers non signés... si ce n'est pas le cas, le moindre mal est
        d'utiliser des entiers signés partout ;)*/
    unsigned int minimum(unsigned int *tab, size_t taille)
    {
        /* la valeur de notre retour... initialisée à tab[0]; */
        unsigned int retour=tab[0];
        /* il nous faut un compteur */
        unsigned cpt;
        for(cpt=0;cpt<taille;cpt++)
        {
            /* si notre valeur de retour est plus grande que la valeur de 
               l'élément du tableau, notre valeur de retour devient celle de 
               l'élément du tableau
             */
            if(retour>tab[cpt])
            /* cela reste toujours une bonne habitude que de mettre 
               systématiquement les accolades... meme si certains prétendent que 
               c'est un peu excessif ;)*/
            {
                 retour=tab[cpt];
            }
        }
        /* on renvoie le nombre sélectionné
        return retour;
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  13. #13
    Membre confirmé Avatar de landryx
    Inscrit en
    Décembre 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 145
    Par défaut
    Citation Envoyé par adrick
    alors pour repondre qu question oui les tableau sont en global dans un fichier.h
    pour repondre a millie ce n'est pas un exercise c'est un projet et c'est bien une aide que je demande le code source que je trouverais je l'adapterais c'est juste que je n'ai plus d'idée poour ne pas oublier de condition sachant que l'on veux la plus petite valeur sauf les negatif et le 0 qui ne doivent pas etre prit en compte

    deja merci pour vos reponse je les analyserais demain avec mon groupe pour en tirer une solution

    si vous avez d'autre idée n'hesitez pas !
    Tu n'as pas un algorithme à proposer pour qu'on puisse savoir ce que tu veux exactement?? parceque ça se trouve ce qu'on te proposera comme reponse ne te conviendra pas ..(ou au pire vous ne comprendrez pas ce qui sera fait)

  14. #14
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Le principe est simple.
    Tu parcours ton tableau dans une boucle tant que, en examinant à chaque tour si la valeur pointée est valable.
    Une des difficultés est de trouver la bonne première valeur.
    Il suffit de parcourir le tableau jusqu'à trouver la première valeur non négative.

    Ton algo va être de ce type;

    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
    Entrée un tableau tab de n valeurs indicées de 1 à N
    Sortie : la plus petit valeur ou 0 s'il n'y a que des valeurs négatives dans ton tableau
    Variables
      i indice de boucle variant de 1 à N
      mini : valeur minimum du tableau
    Début
      Rem Initialisation
      i <- 1
      mini <- 0
      Rem : recherche de la première valeur acceptable
      tant que i <= N et mini = 0 faire
        si tab(i) > mini alors
          mini <- tab(i)
        fin si
        i <- i + 1
      fin tant que
     
      Rem ici on continue en recherchant la plus petite valeur
      tant que i <= N faire
        si tab(i) < mini et tab(i> > 0 alors
          mini <- tab(i)
        fin si
        i <- i + 1
      fin tant que
     
       retourner mini
    fin
    Attention, en C il faudra corriger les indices de boucle car ça varie de 0 à N- 1
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  15. #15
    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 adrick
    alors pour repondre qu question oui les tableau sont en global dans un fichier.h
    Purée, c'est ton prof qui vous apprend à coder comme des gorets ?

    http://emmanuel-delahaye.developpez.com/goret.htm
    http://emmanuel-delahaye.developpez.com/codage.htm

  16. #16
    Membre chevronné Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Par défaut
    je voudrais qu'une fonction me donne la plus petite valeur parmi plusieurs valeurs entiere...
    on et trois a plancher dessus depuis 4 heures
    Ha Ha Ha! #define min

  17. #17
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Lunixinclar
    Ha Ha Ha! #define min
    On se doute bien, mais encore ...

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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