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 :

Temps d'éxecution


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut Temps d'éxecution
    alors salut tous le monde alors j'ai eu un projet !!!
    en effet le projet consiste a ecrire un programme qui permet de choisir le meilleure trie qui correspond a un tableau quelconque !!
    selon le temps d'excution pour chacun des trie ou le nombre d'instruction utilisé et puisque je suis (noob) en C (debutant) je ne sais pas comment calculer la complexité d'un trie pour cette raison 'ai essais d'utilise time.h mais le probleme en aplliquant le clock et clock-t toujour le temps est afficher 0.0000000000000000000000000000000000 ...........
    quelq'un peut m'aider
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    void remplir(int TAB [50],int N )
    {
        int i ;
     
        for(i=0;i<N;i++)
        {
            printf("T[%d]=",i);
        scanf("%d",&TAB[i]);
        }
    }
     
    void afficher (int TAB [50],int N)
    {
        int i ;
        for (i=0;i<N;i++)
            printf("T[%d]=%d \n",i,TAB[i]) ;
     
    }
     
     
    void trierenbulle (int TAB[50],int N)
    {
    int i,x ;
    int permutation ;
    do
    {
        permutation=0 ;
        for(i=0;i<N;i++)
     
            if (TAB[i]>TAB[i+1])
            {
                x=TAB[i];
                TAB[i]=TAB[i+1];
                TAB[i+1]=x ;
                permutation=1 ;
            }
     
        }while (permutation=0) ;}
     
     
            void tri_insertion(int TAB[50], int N)
    {
       int i, j,x;
       for (i = 1; i < N; ++i) {
           x= TAB[i];
           for (j = i; j > 0 && TAB[j-1] > x; j--)
               TAB[j] = TAB[j-1];
           TAB[j] = x;
     
        }
     
    }
     
    void selection(int TAB [50] , int N)
    {
         int i, min, j, x;
     
         for (i = 0; i < N- 1; i++)
         {
             min = i;
             for (j = i + 1; j<N; j++)
                  if (TAB[j] < TAB[min])
                      min = j;
              x = TAB[i];
              TAB[i] = TAB[min];
              TAB[min] = x;
         }
    }
     
     
     
     
     
    void main()
    {
        int TAB[50];
        int N ;
        float temps1,temps2,temps3 ;
    clock_t t1,t2,t3,t4,t5,t6 ;
     
    printf("saisir le nombre de case de votre tableau");
        scanf("%d",&N) ;
     
        remplir(TAB,N ) ;
        afficher (TAB,N) ;
     
        t1 = clock () ;
     
        selection(TAB,N) ;
     
        t2 = clock();
     
        temps1 =(t2-t1)/CLOCKS_PER_SEC;
     
        printf("temps = %4.30f\n", temps1);
     
        t3 = clock();
        tri_insertion(TAB,N) ;
        t4 = clock();
        temps2 =(t4-t3)/CLOCKS_PER_SEC;
        printf("temps = %4.30f\n", temps2);
     
     
        t5 = clock();
        trierenbulle (TAB,N) ;
        t6 = clock();
        temps3 = (t6-t5)/CLOCKS_PER_SEC;
        printf("temps = %f\n", temps3);
     
        afficher (TAB,N)  ;
     
     
     
     
     
        return 0;
    }
    quelq'un peux m'aider s'il vous plait

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    le type clock_t est un type integral
    en faisant (t2_t1)/CLOCKS_PER_SEC, on effectue une division entiere qui retourne 0 pour des temps inferieurs à la seconde.

    faire (float)(t2_t1) / CLOCKS_PER_SEC pour obtenir un flottant.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    j ai deja fait ca mais le meme probleme s il vous plait aider moi

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 14
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Essaie avec un tableau beaucoup plus grand, 50k voire 500k, ou plus si tu as besoin, devrait te permettre de voir la différence.
    Aussi, dans les paramètres de la fonction remplir, tu n'as pas besoin de mettre la taille entre crochet, met simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void remplir(int TAB [],int N )
    ça ne corrigera rien mais c'est plus propre

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Citation Envoyé par Ilphrin Voir le message
    Bonjour,

    Essaie avec un tableau beaucoup plus grand, 50k voire 500k, ou plus si tu as besoin, devrait te permettre de voir la différence.
    Aussi, dans les paramètres de la fonction remplir, tu n'as pas besoin de mettre la taille entre crochet, met simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void remplir(int TAB [50],int N )
    ça ne corrigera rien mais c'est plus propre
    Oui, la résolution du timer est insuffisante.
    Sinon on peut utiliser rdtsc() pour dater (disponible pour quasi tous les processseurs), sa résolution est égale à un tick d'horloge processeur soit 0.000333µsecondes pour un proc à 3GHz.

    Ilphrin a surement voulu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void remplir(int TAB [] , int N )

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    alors mes amis vous pouvez m ecrire les instructions pour calculer le nombre d instruction s il vous plait

  7. #7
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Novembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Novembre 2015
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    alors mes amis s'il vous plait j'ai besoin de cette instruction

  9. #9
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Citation Envoyé par Ilphrin Voir le message
    Essaie avec un tableau beaucoup plus grand, 50k voire 500k, ou plus si tu as besoin, devrait te permettre de voir la différence.
    Citation Envoyé par dalfab Voir le message
    Sinon on peut utiliser rdtsc() pour dater (disponible pour quasi tous les processseurs), sa résolution est égale à un tick d'horloge processeur soit 0.000333µsecondes pour un proc à 3GHz.
    A toi de creuser ces possibilités, trouve la fonction rdtsc() ou essaie de trier plus de données.
    La fonction rdtsc() n'est disponible dans tous les environnements C (essaie #include <rdtsc.h> par exemple)
    Augmenter la taille est une autre piste plus facile.

    Nous ne pouvons pas plus

Discussions similaires

  1. [Framework] Temps d'éxecution Requête Dao
    Par w3blogfr dans le forum Spring
    Réponses: 2
    Dernier message: 07/01/2010, 15h24
  2. C# : calculer le temps d'éxecution
    Par Leelith dans le forum C#
    Réponses: 2
    Dernier message: 22/11/2009, 09h41
  3. Temps d'éxecution d'une requête longue
    Par Adm_Antonio dans le forum Administration
    Réponses: 13
    Dernier message: 04/06/2008, 15h11
  4. calcul temps d'éxecution d'une fonction
    Par psycho_xn dans le forum C
    Réponses: 8
    Dernier message: 02/02/2008, 19h31
  5. Réponses: 4
    Dernier message: 24/11/2005, 08h34

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