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 :

les tris et la fonction gettime


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut les tris et la fonction gettime
    bonjour,
    je débute en language C et je trouve bcp de difficulités surtout avec les algos.
    bon, notre prof nous a demandés de faire les tris: à bulles, par sélection et par insertion, et par la suite calculer leur complexité et tout comparer vers la fin.mais, malheureusement je ne sais pas comment faire.pouriez-vous m'aider svp?
    merci d'avance,

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 486
    Par défaut
    Citation Envoyé par badrodoja Voir le message
    pouriez-vous m'aider svp? merci d'avance,
    Bien sûr, mais on ne te donnera pas la solution toute faite. Poste le code que tu as déjà écrit et on t'aidera ensuite.

    À défaut, il faut déjà que tu identifies ce sur quoi tu butes : les tris à bulles, par sélection ou par insertion sont des problèmes algorithmiques, c'est-à-dire qu'ils se traitent indépendament du langage utilisé, et donc en amont de la rédaction du code. Si c'est eux qui te posent problème, tu trouveras de nombreux exemples un peu partout.

    Pour la complexité, on va dire pour faire simple que c'est le nombre d'opérations qu'il faudra à chaque algorithme pour accomplir sa mission. Certains seront plus efficaces que d'autres. Maintenant, je ne sais pas si ton professeur exige de toi que tu fasses une analyse mathématique, ou s'il s'agit de faire un simple constat, auquel cas il te suffira d'incrémenter une variable à chaque tour de boucle.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    bonjour,
    Je vous remercie beaucoup pour votre attention,
    alors, le travail que j'ai à faire est de programmer les tris à bulles et par sélection en language C tout d'abord, puis je dois calculer leur temps d'exécution au moyen de la fonction "gettime", pour faire une comparaison.
    j'ai réussis à faire le tri à bulles mais le tri à sélection ne marche pas correctement et je ne sais pas ce qui cloche.
    je vous donne le code
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    void triInsertion (int tab[], int n)
    {
         int i;
         int j;
         int v;
         for (i=2; i<n; i++)
         {
             v = tab[i];
             j = i;
             while (tab[j-1]>v)
             {
                   tab[j-1] = tab[j];
                   j--;
             }
             tab[j] = v;
         }
    }
    int main(int argc, char *argv[])
    {
        int tab[10], p;
        for (p=0; p<10; p++)
             tab[p] = rand();
        for (p=0; p<10; p++)
            printf("%d\t" ,tab[p]);
        triInsertion (tab, 10);
        printf("\nles elements tries sont:\n");
        for (p=0; p<10; p++)
            printf("%d\t",tab[p]);  
     
      system("PAUSE"); 
      return 0;
    }
    et pour la fonction gettime je ne sais comment l'utiliser
    j'attends vos conseils
    et merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    c'est urgent,
    pourrais-je avoir une réponse s'il vous plait?

  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 badrodoja Voir le message
    bonjour,
    Je vous remercie beaucoup pour votre attention,
    alors, le travail que j'ai à faire est de programmer les tris à bulles et par sélection en language C tout d'abord, puis je dois calculer leur temps d'exécution au moyen de la fonction "gettime", pour faire une comparaison.
    j'ai réussis à faire le tri à bulles mais le tri à sélection ne marche pas correctement et je ne sais pas ce qui cloche.
    je vous donne le code
    Euh, c'est un tri par sélection et il s'appelle "triInsertion() " ? Est-ce bien logique ?

    D'autre part, as-tu compris le principe du tri par sélection ? Si oui, peux tu l'expliquer ?
    et pour la fonction gettime je ne sais comment l'utiliser
    Moi non plus. Ce n'est pas une fonction standard.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Euh, c'est un tri par sélection et il s'appelle "triInsertion() " ? Est-ce bien logique ?

    D'autre part, as-tu compris le principe du tri par sélection ? Si oui, peux tu l'expliquer ?
    Moi non plus. Ce n'est pas une fonction standard.
    Désolée,

    C'est bien un tri par insertion que je dois faire et non un tri par sélection,c'est juste une erreur de frappe.

    pour la fonction gettime, voilà ce que nous a demandé notre prof:

    définir une structure Time t
    t.t1_hour
    t.t2_min
    t.t3_sec
    t.t4_100nd

    et puis avec la gettime, on fait
    gettime (&t1)
    triInsertion;
    gettime (&t2)

    et enfin on calcule la différence t1-t2 ou l'inverse je ne me souviens plus

    Mais, je vous avoue que j'ignore comment procéder.

  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 badrodoja Voir le message
    Désolée,

    C'est bien un tri par insertion que je dois faire et non un tri par sélection,c'est juste une erreur de frappe.

    pour la fonction gettime, voilà ce que nous a demandé notre prof:

    définir une structure Time t
    t.t1_hour
    t.t2_min
    t.t3_sec
    t.t4_100nd

    et puis avec la gettime, on fait
    gettime (&t1)
    triInsertion;
    gettime (&t2)

    et enfin on calcule la différence t1-t2 ou l'inverse je ne me souviens plus
    Il n'y a pas à "se souvenir", mais à faire marcher son bon sens (je n'ose même pas parler de reflexion). Si tu relèves l'heure T1 puis l'heure T2, comment calculer le temps écoulé ?

    Comme je l'ai déjà dit, il n'y a pas de fonction gettime en C standard, donc je ne peux pas t'aider d'avantage.

    La méthode standard consiste à utilise clock(), qui est fait pour ça.

    #include <time.h>

    clock_t t1 = clock();

    /* traitement a mesurer */

    clock_t t2 = clock();

    La différence donne un nombre de ticks horloge. Le langage C fourni une constante qui indique quel est la fréquence de l'horloge en nombre de ticks par seconde : CLOCKS_PER_SEC

    Je te laisse établir la formule qui calcule le temps en secondes ou en unités plus petites. Rappel F = 1/T.

    Nota : si la fréquence de l'horloge est trop faible, appeler la fonction à tester plusieurs fois et faire la moyenne.

Discussions similaires

  1. [Langage][Classe][Methode]Comment récuperer les arguments d'une fonction ?
    Par FremyCompany dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/07/2006, 16h06
  2. récuperer les données de la fonction data arrival
    Par johnson95 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 20/06/2006, 10h35
  3. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41
  4. [VBA-E] Lister les arguments d'une fonction
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/02/2006, 12h04
  5. [POO] passage nom objet dsn les parametres d'une fonction
    Par melou dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 21/10/2005, 17h26

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