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 :

problème d'affichage de résultat d'un code


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut problème d'affichage de résultat d'un code
    bonsoir à tous, lorsque je fait l'exécution de mon code , je n'obtient pas le résultat désirée !!!
    voici le code et l'affichage obtenu
    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
     
    for (int j = 1 ; j <= N; j++)
    {
                  for (int i = 1; i <= M; i++)
              {
     
                float a = coeffapp();
                   dist[j]  += pow((X[j] - W[i][j]),2);
                          W1[j]   = W[i][j] + a*(X[j] - W[i][j]);
                           W2[j]   = W[i][j] - a*(X[j] - W[i][j]);
     
                      }
     
                            if(dist[j]<dmin)
                                  Eg = Ep[j];
     
                                  dmin = dist[j];
     
                            if(Ep[j] == Ef){
                                Wg[j] = W1[j];
     
                                }
                            else{
                                  Wg[j] = W2[j];
     
                                  }
    printf("distance[%d]= %f\n",j, dist[j]);
    printf("distance minimale correspondante au neurone gagnant:%f\n",dmin);
     printf("l'étiquette de neuronne gagnant:%f\n",Eg);
    printf(" wg[%d]== %f\n",j, Wg[j]);
    Nom : affich1.PNG
Affichages : 113
Taille : 54,2 Ko

    je veux afficher la matrice distance après il y a une comparaison avec une dist min que je l'initialise de le début, mais la résultat affichée ne donne pas la valeur minimale de la distance , de plus je veux afficher les 2 matrices chacune seul car dans l'affichage ne sont pas ordonnés

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 33
    Points : 32
    Points
    32
    Par défaut
    Bonjour,

    Cette version là du code ne compile pas.. Il manque une accolade fermante, celle du for (int i = 1; i <= M; i++) je pense.

    Ensuite, le dmin = dist[j]; n'est pas conditionné, du coup 'dmin' est écrasé par dist[j] à chaque itération de ta première boucle.. Je ne pense pas que se soit ce que tu veux(veuilles?) faire.

    Pour le reste j'attends la bonne version du code pour t'aider à déboguer. Et avec un peu plus de code j'y verrai plus clair

    Bon courage!

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    version complète du 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
     
    #include <stdio.h>
    #include<math.h>
    #include <time.h>
    #include <stdlib.h>
    #include<conio.h>
    int N=25 ; /*taille de la couche de sortie */
    int M =23; /*taille de la couche d'entrée */
    float Eg;
    float Ef; /*étiquette de réference */
    float a;
    float dmin =0.1;
    float W1 [25] ;
    float W2 [25] ;
    float Wg [25] ;
    float dist [25] ; /*tableau contient les différentes distances*/
    float X [23]={0.4,0.3,0.2,0.1,0.6,0.1,0.5,0.8,0.7,0.4,0.9,0.2,0.3,0.6,0.5,0.4,0.6,0.4,0.7,0.9,0.3,0.2,0.5}; ;/*vecteur d'entrée*/
    double W[23][25]= {{0.1,0.4,0.2,0.3,0.5,0.1,0.4,0.3,0.6,0.4,0.7,0.4,0.5,0.8,0.7,0.2,0.5,0.1,0.4,0.1,0.9,0.3,0.2,0.5,0.1},{0.4,0.9,0.2,0.3,0.5,0.1,0.4,0.3,0.6,0.4,0.7,0.4,0.5,0.8,0.7,0.7,0.2,0.5,0.1,0.4,0.4,0.1,0.7,0.6,0.3},{0.1,0.4,0.2,0.3,0.5,0.1,0.4,0.3,0.6,0.4,0.1,0.7,0.4,0.5,0.8,0.9,0.7,0.4,0.5,0.8,0.7,0.6,0.2,0.3,0.5},{0.4,0.9,0.2,0.3,0.5,0.3,0.7,0.4,0.5,0.8,0.4,0.5,0.8,0.7,0.6,0.2,0.5,0.1,0.4,0.1,0.6,0.7,0.5,0.3,0.2},{0.4,0.9,0.9,0.1,0.3,0.3,0.7,0.4,0.5,0.8,0.4,0.1,0.3,0.6,0.3,0.7,0.2,0.5,0.1,0.4,0.3,0.6,0.1,0.5,0.2},{0.1,0.4,0.5,0.8,0.7,0.6,0.4,0.2,0.5,0.1,0.1,0.7,0.4,0.5,0.8,0.9,0.7,0.4,0.5,0.8,0.3,0.8,0.4,0.9,0.5},{0.1,0.4,0.2,0.3,0.5,0.3,0.7,0.4,0.5,0.8,0.4,0.5,0.8,0.7,0.6,0.2,0.5,0.1,0.4,0.1,0.5,0.8,0.6,0.1,0.3},{0.4,0.9,0.1,0.4,0.2,0.1,0.4,0.1,0.3,0.6,0.4,0.5,0.8,0.7,0.4,0.7,0.2,0.5,0.1,0.4,0.2,0.7,0.4,0.1,0.3},{0.1,0.4,0.2,0.3,0.5,0.1,0.4,0.1,0.3,0.6,0.4,0.5,0.8,0.7,0.4,0.9,0.7,0.4,0.5,0.8,0.6,0.5,0.3,0.2,0.1},{0.1,0.4,0.4,0.9,0.2,0.5,0.1,0.4,0.1,0.3,0.4,0.1,0.3,0.6,0.3,0.2,0.5,0.1,0.4,0.1,0.9,0.6,0.3,0.5,0.2},{0.4,0.9,0.9,0.2,0.3,0.2,0.5,0.1,0.4,0.1,0.4,0.1,0.3,0.6,0.3,0.7,0.2,0.5,0.1,0.4},{0.4,0.9,0.2,0.3,0.5,0.5,0.1,0.4,0.1,0.3,0.4,0.5,0.8,0.7,0.4,0.9,0.7,0.4,0.5,0.8,0.3,0.5,0.1,0.2,0.7},{0.1,0.4,0.2,0.3,0.5,0.2,0.5,0.1,0.4,0.1,0.7,0.4,0.5,0.8,0.7,0.2,0.5,0.1,0.4,0.1,0.6,0.8,0.4,0.5,0.3},{0.4,0.2,0.3,0.5,0.9,0.6,0.4,0.2,0.5,0.1,0.7,0.4,0.5,0.8,0.7,0.7,0.2,0.5,0.1,0.4},{0.1,0.4,0.3,0.6,0.4,0.7,0.4,0.5,0.8,0.7,0.1,0.7,0.4,0.5,0.8,0.9,0.7,0.4,0.5,0.8,0.5,0.3,0.9,0.6,0.2},{0.1,0.4,0.1,0.3,0.6,0.7,0.4,0.5,0.8,0.7,0.4,0.5,0.8,0.7,0.6,0.2,0.5,0.1,0.4,0.1,0.5,0.2,0.3,0.7,0.1},{0.4,0.9,0.1,0.3,0.6,0.7,0.4,0.5,0.8,0.7,0.4,0.5,0.8,0.7,0.4,0.7,0.2,0.5,0.1,0.4},{0.4,0.9,0.5,0.8,0.7,0.4,0.5,0.8,0.7,0.6,0.4,0.5,0.8,0.7,0.6,0.9,0.7,0.4,0.5,0.8,0.9,0.4,0.8,0.2,0.1},{0.1,0.4,0.9,0.1,0.3,0.7,0.4,0.5,0.8,0.7,0.4,0.5,0.8,0.7,0.4,0.2,0.5,0.1,0.4,0.1,0.4,0.3,0.2,0.6,0.9},{0.4,0.9,0.1,0.3,0.6,0.3,0.7,0.4,0.5,0.8,0.4,0.5,0.8,0.7,0.4,0.7,0.2,0.5,0.1,0.4},{0.1,0.4,0.1,0.3,0.6,0.3,0.7,0.4,0.5,0.8,0.4,0.1,0.3,0.6,0.3,0.9,0.7,0.4,0.5,0.8,0.5,0.6,0.9,0.4,0.1},{0.1,0.4,0.3,0.6,0.4,0.2,0.5,0.1,0.4,0.1,0.7,0.4,0.5,0.8,0.7,0.2,0.5,0.1,0.4,0.1,0.3,0.8,0.2,0.5,0.7},{0.4,0.9,0.2,0.3,0.5,0.6,0.4,0.2,0.5,0.1,0.7,0.4,0.5,0.8,0.7,0.7,0.2,0.5,0.1,0.4,0.1,0.6,0.4,0.8,0.5}}; /*matrice de poids*/
     
    int Ep[25]={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}; /*les etiquettes fixées de la couche de sorite*/
    float coeffapp(){
                float f ;
                 srand(time(NULL)); // initialise le generateur de maniere aleatoire
                 f= rand()/(RAND_MAX+1.0);
     
                 return f;
     
    }
     int main(){
     
     for (int j = 1 ; j <= N; j++)
    {
                  for (int i = 1; i <= M; i++)
              {
     
                float a = coeffapp();
                   dist[j]  += pow((X[j] - W[i][j]),2);
                          W1[j]   = W[i][j] + a*(X[j] - W[i][j]);
                           W2[j]   = W[i][j] - a*(X[j] - W[i][j]);
              }
     
     
                            if(dist[j]<dmin)  {
                                  Eg = Ep[j];
                                  dmin = dist[j];
                            }
                            if(Ep[j] == Ef) {
                                Wg[j] = W1[j];}
                            else
                                  Wg[j] = W2[j];
     
     
     
     
    printf("distance[%d]= %f\n",j, dist[j]);
    printf("distance minimale correspondante au neurone gagnant:%f\n",dmin);
     printf("l'étiquette de neuronne gagnant:%f\n",Eg);
    printf(" wg[%d]== %f\n",j, Wg[j]);
      }
      getch();
        return 0;
    }

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ça fait beaucoup de variables globales, dis donc...

    Mais ton problème, c'est cette fonction, appelée en boucle près de 600 fois dans l'exécution du programme (moins d'une seconde):
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    float coeffapp() {
    	float f ;
    	srand(time(NULL)); // initialise le generateur de maniere aleatoire
    	f= rand()/(RAND_MAX+1.0);
    	return f;
    }
    Que retourne time(NULL), selon toi?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    l'appelle de cette fonction permet de donner à chaque fois une valeur comprise entre 0 et 1 et lorsque j'ai testé cette fonction j'ai obtenu le résultat désiré
    en fait , je veux que cette valeur diminue au cours de temps , mais pour le moment je trouve cette fonction comme solution

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Okay, indice numéro deux: time(NULL) retourne un nombre entier de secondes écoulées.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    je sais pas qu'est ce que tu veux comprendre mais a propos de que je comprend cette instruction srand(time(NULL)) permet de donner à chaque fois une nouvelle valeur et lorsque je remplace time(NULL) par exemple par 0 , la valeur reste constante aussi même j'élimine toute l'instruction

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Que se passe-t-il quand une fonction qui retourne un nombre entier de secondes écoulées est appelée six cents fois dans la même seconde?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    je sais pas, mais quelle est la relation entre l'exécution de cette fonction et le résultat obtenu !!!!!!!!!!

  10. #10
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    est ce qu'il y a d'autres solutions permettent de renvoyer une valeur comprise entre 0 et 1 et décroissante au cours tu temps

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    ELLE RETOURNE SIX CENT FOIS LE MÊME RÉSULTAT!!!!!
    Résultat, srand() est sans cesse réglé à la même valeur, ce qui fait que le rand() qui suit retourne toujours la même valeur!
    As-tu compris le problème, maintenant?

    Et au passage, si tu avais pensé à regarder dans la FAQ de dvp pour le langage C, tu y aurais trouvé le problème et sa solution.

    En plus, rand() ne correspond même pas à ton besoin: rand() retourne des valeurs aléatoires, et toi tu veux une valeur décroissante.

    Et franchement, c'est assez simple:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int i;
    for(i=0 ; i<NOMBRE_ETAPES ; i++)
    {
    	int valeurQuiDiminue = NOMBRE_ETAPES - i;
    	double valeurQuiDiminueDe1a0 = valeurQuiDiminue * 1.0 / NOMBRE_ETAPES;
     
    	/*faire ce que tu veux avec valeurQuiDiminueDe1a0*/
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    merci bien

  13. #13
    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
    Citation Envoyé par Médinoc Voir le message
    ELLE RETOURNE SIX CENT FOIS LE MÊME RÉSULTAT!!!!!
    J'ai ri.

  14. #14
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    Points : 5
    Points
    5
    Par défaut


    Matt_Houston, je suis débutante en programmation C comparant à vous

Discussions similaires

  1. Extjs ! (problème d'affichage de résultat du code Javascript
    Par nabil.brarou dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 30/07/2012, 21h05
  2. [MySQL] Petit problème d'affichage de résultats
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/01/2011, 11h24
  3. [PHP 4] Problème d'affichage de résultat
    Par fraisa1985 dans le forum Langage
    Réponses: 1
    Dernier message: 15/06/2009, 19h16
  4. problème d'affichage du résultat dans une classe qui utilise SNMP
    Par ramzouni dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 22/05/2009, 01h26
  5. Problème d'affichage du résultat
    Par cirtey dans le forum C
    Réponses: 6
    Dernier message: 24/02/2007, 19h01

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