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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    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 : 132
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
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 33
    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
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 12
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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.

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