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 :

Fonction qui retourne l'indice du tableau respectant une condition


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut Fonction qui retourne l'indice du tableau respectant une condition
    Bonjour à tous.
    Je vous expose mon problème :
    J'ai un tableau de cette forme que j'ai rempli après une étape de simulation (500x):
    En gros, chaque i correspond a la valeur tirée, et proba[i] correspond au nombre de fois où i a été tiré lors des 500 fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    proba[0]=0
    proba[1]=0
    proba[2]=49
    proba[3]=133
    proba[4]=110
    proba[5]=90
    proba[6]=47
    proba[7]=34
    proba[8]=20
    proba[9]=10
    proba[10]=5
    proba[11]=2
    Je veux ensuite calculer une proba, je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(i=0;i<repeat;i++){
    		if(proba[i] != 0){
    			double pval = (proba[i])/(float)repeat;
    			printf("proba[%d]=%d, p-val = %.3f \n",i,proba[i],pval);
    		}
    	}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    proba[0]=0 pval non calculée
    proba[1]=0 pval non calculée
    proba[2]=49, p-val = 0.098
    proba[3]=133, p-val = 0.266
    proba[4]=110, p-val = 0.220
    proba[5]=90, p-val = 0.180
    proba[6]=47, p-val = 0.094
    proba[7]=34, p-val = 0.068
    proba[8]=20, p-val = 0.040
    proba[9]=10, p-val = 0.020
    proba[10]=5, p-val = 0.010
    proba[11]=2, p-val = 0.004
    Je cherche en fait à avoir l'indice de proba pour lequel p-val < 0.05, dans l'exemple, 8.

    J'avais donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(i=0;i<repeat;i++){
    		if(proba[i] != 0){
    			double pval = (proba[i])/(float)repeat;
    			if(pval < 0.05){
    				break;
    				return(i);
    			}
    		}
    Mais cela ne fonctionne pas ....
    Comment puis je procéder ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Isabella83 Voir le message
    Je cherche en fait à avoir l'indice de proba pour lequel p-val < 0.05, dans l'exemple, 8.

    J'avais donc fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(i=0;i<repeat;i++){
    		if(proba[i] != 0){
    			double pval = (proba[i])/(float)repeat;
    			if(pval < 0.05){
    				break;
    				return(i);
    			}
    		}
    Mais cela ne fonctionne pas ....
    Comment puis je procéder ?
    Bien le bonjour,

    Le break a pour effet de briser une séquence. Là en l'occurrence, à cause de ton break, jamais tu ne rentreras dans le return.

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    J'ai modifié en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for(i=0;i<500;i++){
    		if(proba[i] != 0){
    			double pval = (proba[i])/500;
    			if(pval < 0.05){
    				return(i);
    				break;
    			}
    		}
     
    	}
    Mais j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    warning: control reaches end of non-void function

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans ces cas-là, on lit le message d'erreur.... (et on les comprends)

    Il est assez explicite pour que je n'ai besoin de te le traduire.

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    Et bien non, je ne comprends pas mon erreur. Enfin je pense que la fonction rencontrera un problème lorsque je n'aurai aucune pval <0.05. et dans ce cas comment puis-je procéder ?
    J'ai déclarer la fonction (simulation )contenant cette portion de code comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int simulation(mes arguments)
    Ensuite, dans mon main que j'ai déclaré comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int main(void)
    {	
    	srand(time(NULL));
    	int mrna_length = 2349 ;
    	int exp_tag_nb = 42.08;
    	int repeat = 500;
    	double mRNA_coverage = 12.2;
    	int j;
    	j=simulation(mrna_length, mRNA_coverage, exp_tag_nb, repeat);
    	printf("valeur de j = %d\n",j);	
    	return 0;
     
    }

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    Je suis en train de penser, je vais peut etre creer un tableau avec mes proba en valeur.
    Ensuite, je vais créer une fonction qui me retourne le premier élément du tableau où valeur < seuil.
    Je lui passerai en paramètre un tableau et sa taille, et le seuil .
    Je vais essayer, ce serait peut être plus simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2011, 23h12
  2. Fonction qui retourne un tableau ou 2 variables ? possible ou non
    Par jiojio dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 05/06/2006, 16h00
  3. [VB] Fonction qui retourne un tableau
    Par ptitsoleil87 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 24/12/2005, 11h52
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 16h06

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