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 :

C-Array et division


Sujet :

C++

  1. #1
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par d�faut C-Array et division
    bonjour,

    je suis en train de traduire l'algorithme d'alignement local "smith_waterman" en un programme c++ mais je suis vraiment coinc�e l�!
    l'algorithme ne doit pas rester tel qu'il est! il y a des modifications � faire.
    en effet:
    -le score d'alignement est �gal �: 100/(nombre de caract�res de la promi�re s�quence) dans le cas d'un match
    -le score d'alignement est �gal �: -(100/(nombre de caract�res de la promi�re s�quence)) dans le cas d'un mismatch.
    d'une mani�re � ce que le score maximal existant dans la matrice ne d�passe pas 100.

    Mon probl�me c'est que je trouve des valeurs sup�rieures � 100 dans la matrice ce qui n'est pas admissible.

    qui parmi vous aura l'amabilit� de m'aider s'il vous plait?

    merci,

  2. #2
    Membre tr�s actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par d�faut
    l'erreur est l�: suis la direction de mon doigt...

    Plus s�rieusement, �a va �tre dur de t'aider sans voir ce que tu as fait.

  3. #3
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par d�faut
    vous voulez que je vous copie tout le programme?

  4. #4
    Membre tr�s actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par d�faut
    Citation Envoy� par salma1990 Voir le message
    vous voulez que je vous copie tout le programme?
    ben au moins la partie qui alimente la matrice

  5. #5
    Membre tr�s actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par d�faut
    juste une tentative dans le vide... es-tu sure que "nombre de caract�res de la premi�re s�quence" est toujours > 0 ?

  6. #6
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par d�faut
    oui oui! en fait c'est l'utilisateur qui tape les deux s�quences comme entr�es � chaque fois que je fais un essai je tape deux s�quences qui ne sont pas vides

  7. #7
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par d�faut
    maintenant j'ai modifi� le programme mais la matrice ne contient que des 0

    voil� 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
     
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <cmath>
    #include <sys/time.h>
    using namespace std;
     
    double similarity_score(char a,char b);
    double find_array_max(double array[],int length);
    int N_a,N_b;
    string seq_a, seq_b;
    int main(){
        cout<<" tapez la premiere sequence"<<endl; cin>> seq_a;
        cout<<" tapez la deuxieme sequence"<<endl; cin>> seq_b;
        N_a = seq_a.length()+1;                     // get the actual lengths of the sequences
        N_b = seq_b.length()+1;
     
        double H[N_a+1][N_b+1];
         for(int i=0;i<=N_a+1;i++){
            H[i][0]=0;
          }
         for(int j=0;j<=N_b+1;j++){
          H[0][j]=0;
          }
     
        double temp[3];
        int I_i[N_a+1][N_b+1],I_j[N_a+1][N_b+1];
     
        for(int i=1;i<=N_a;i++){
        for(int j=1;j<=N_b;j++){
         if(seq_a[i]==seq_b[j])
     
         H[i][j] = H[i-1][j-1]+similarity_score(seq_a[i],seq_b[j]);
          else
     
     
          temp[0] = H[i-1][j]-similarity_score(seq_a[i],seq_b[j]);
          temp[1] = H[i][j-1]-similarity_score(seq_a[i],seq_b[j]);
          temp[2] = 0.;
          H[i][j] = find_array_max(temp,3);
        }
        }
     
      cout<<"**********************************************"<<endl;
      cout<<" la matrice de scores est: "<<endl<<endl;
      for(int i=0;i<=N_a-1;i++){
        for(int j=0;j<=N_b-1;j++){
          cout<<H[i][j]<<"   ";
        }
        cout<<endl;
        }
      double H_max = 0.;
      int i_max=0,j_max=0;
      for(int i=0;i<=N_a-1;i++){
        for(int j=0;j<=N_b-1;j++){
          if(H[i][j]>H_max){
    	H_max = H[i][j];
    	i_max = i;
    	j_max = j;
          }
        }
      }
     
      double similarity_score(char a,char b){
     
      double result;
     
          result=100/(N_a-1);
     
      return result;
    }
     
    double find_array_max(double array[],int length){
     
      double max = array[0];            // start with max = first element
      ind = 0;
     
      for(int i = 1; i<length; i++){
          if(array[i] > max){
    	max = array[i];
    	ind = i;
          }
      }
      return max;                    // return highest value in array
    }
     
     
     
    }

  8. #8
    Membre tr�s actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par d�faut
    c'est la totalit� du code ? Je demande parce que �a ne compile pas, pour plusieurs raisons.
    Les tableaux style C avec [] doivent �tre d�clar�s avec des valeurs constantes entre les crochets (c'est le cas pour H, I_i et I_j) alors que dans le code ils sont allou�s dynamiquement avec la longueur des chaines entr�es. Pourquoi ne pas utiliser des vector ?

    dans la fonction find_array_max, ind n'est pas d�clar�e et ne sert pas � grand chose d'apr�s ce que j'ai pu voir.

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    double similarity_score(char a,char b){
     
      double result;
     
          result=100/(N_a-1);
     
      return result;
    }
    Tu fais une division enti�re, mais tu retournes le r�sultat en double, je pense donc que ton intention �tait de faire une division � virgule flottante:
    Code C++ : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    double similarity_score(char a,char b){
     
      double result;
     
          result=100.0/(N_a-1.0);
     
      return result;
    }
    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.

  10. #10
    Membre tr�s actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par d�faut
    attention �galement � tes boucles, par exemple
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    for(int i=0;i<=N_a+1;i++){
            H[i][0]=0;
        }
    alors que la premi�re dimension de H va de 0 � N_a, ta boucle va 1 "cran" trop loin...

  11. #11
    Membre actif
    Femme Profil pro
    �tudiant
    Inscrit en
    Mars 2013
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 11
    Par d�faut
    merci

Discussions similaires

  1. Diviser un array toutes les deux valeurs
    Par MrWazo dans le forum Langage
    R�ponses: 5
    Dernier message: 07/05/2015, 14h40
  2. [PHP 5.4] Diviser un array en 3
    Par Rifton007 dans le forum Langage
    R�ponses: 9
    Dernier message: 26/08/2013, 10h54
  3. TStringList en array of string
    Par JediKerian dans le forum Langage
    R�ponses: 2
    Dernier message: 20/03/2003, 15h37
  4. R�ponses: 2
    Dernier message: 23/02/2003, 00h49
  5. passage en param�tre d'un array dynamique 2D
    Par Guigui_ dans le forum Langage
    R�ponses: 4
    Dernier message: 27/11/2002, 19h47

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