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 :

Decomposition d'une sequence


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Grenade

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Decomposition d'une sequence
    bonsoir a tous,pouvez vous m'aidez a comprendre ce 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
     
    void DecomposeFSeq(FILE *fp,F *TabP[],int Num1,int Num2,int Nb1,int Nb2, char *t,int Lt){
    	char s[1500];
    	int j,i,x;
    	j=0;
    	InitTabP(TabP);
    	while(fgets(s,1500,fp))
    	{
     
    		if(s[0]>='0' && s[0]<='9') 	
    		{
    			x=atoi(s);
     
    			if(x==Num1)
    			{
    				i=0;
    				while(i<Nb1)
    				{
    					fgets(s,1500,fp);
    					TabP[j]=Repeat(s,TabP[j],t,Lt);
    				i++;
    				}
    			}
    			if(x==Num2)
    			{
    				 i=0;
    				while(i<Nb2)
    				{
    					fgets(s,1500,fp);
    					TabP[j]=Repeat(s,TabP[j],t,Lt);
    					j++;
    				i++;
    				}
    			}
    		}
    	}
    }

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Tu es déjà venue pour nous demander la même chose avec un code différent il y a quelques semaines.

    Si on te fait tout à chaque fois, tu n'apprendras pas vraiment.

    Essaye déjà de comprendre la signification de certaines lignes et de nous montrer ce que tu as compris et ce que tu n'as pas compris.

    Ainsi tu pourras apprendre et nous pourrons t'aider sans faire l'exercice à ta place.


    EDIT : en haut de ce site, tu as une fonction de recherche. Tape 'man taFonction' pour avoir toute la documentation sur une fonction dont tu ignore l'utilité.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Grenade

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut filter les sous chaines de caractéres
    Bonjour a tous,
    j'ai construit une fonction qui supprime les élément de ma liste chaînée qui ont une fréquence < Nb quand je l'ai testé tous les element sont supprimés seul l'elemnt entête.je vois pas pourquoi ??
    voila mon 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
     
    F *filtrer(F *Liste,int Nb){
    F  *next;
     
           Liste *premier_valide = NULL;
            Liste *q =seq;
            while (q != NULL)
            {
     
                if(q->freq<=Nb)
                {
                    if(premier_valide==NULL)
                    {
                        premier_valide=q->suivant;
     
     
                    }
                    else
                    premier_valide->suivant=q->suivant;
                    // nettoyage
                    next = q->suivant;
                    free(q);  // libère la mémoire de 'q'
                    q = next;
     
                }
                else
                {
                    if (premier_valide == NULL)
                    {
                        premier_valide = q;
                    }
                    q = q->suivant;
                }
            }
           // q = premier_valide;
        }
    Merci d'avance

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Grenade

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    je suis vraiment désolé Neckara!! Merci pour vos conseils précieux et votre aide

  5. #5
    Membre habitué
    Profil pro
    amateur
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : amateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par Mlle Mhamdi Voir le message
    Bonjour a tous,
    j'ai construit une fonction qui supprime les élément de ma liste chaînée qui ont une fréquence < Nb quand je l'ai testé tous les element sont supprimés seul l'elemnt entête.je vois pas pourquoi ??
    Merci d'avance
    Il y a au moins l'erreur logique suivante : Dans le cas où q->freq<=Nb, tu dois seulement détacher q de la liste, puis le "nettoyer" comme tu fais (on dit généralement "libérer" la mémoire). Détacher signifie faire pointer la cellule précédente --s'il y en a une-- sur la suivante, en sautant par-dessus q. D'accord?
    Mais s'il n'y a pas de cellule précédente, tu n'as rien à faire dans le cas d'une liste simplement chaînée (essaie de comprendre pourquoi). Cela signifie que tu es en début de liste, et donc aussi que premier_valide est encore nul. D'où ta confusion et ton erreur qui consiste à affecter alors premier_valide à la celllule suivante de q. Mais cela ne doit arriver que si celle-ci passe ton filtre, d'accord? Donc tu ne dois affecter premier_valide que dans le seconde branche de ton test principal, comme tu le fais très bien.

    PS: je te conseille de faire attention à bien présenter ton code (indentation, etc...). Il y avait des petits défauts qui rendent sa compréhension difficile.

    Denis

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Une petite idée d'algorithme un peu plus simpe :

    - Traiter le cas de la liste vide
    - Traiter le cas de la liste ayant un seul élément.
    Puis faire une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while(tmp->suivant != NULL)
    {
            if(tmp->suivant->freq <= Nb)
            {
                  //suppression du maillon tmp->suivant.
                  tmp->suivant = suppressionEnTete(tmp->suivant);
            }
           tmp = tmp->suivant;
    }

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Grenade

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Appel fonction
    Merci bien j'ai bien résolu le problème de la fonction filtrer!mais dans le main ce code m'affiche un erreur j'ai essayé plusieurs fois de trouver la faille mais sans résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	Liste2=filtrer(Liste,Nb);
     
    	Nbvar=Nbvariable(Liste2);//Nbvariable est une fonction qui compte le      nombre de variable dans ma liste //
     
    	printf("\n Nombre de différentes variables = %d",Nbvar);

  8. #8
    Membre habitué
    Profil pro
    amateur
    Inscrit en
    Avril 2012
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : amateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2012
    Messages : 145
    Points : 144
    Points
    144
    Par défaut
    Citation Envoyé par Mlle Mhamdi Voir le message
    Merci bien j'ai bien résolu le problème de la fonction filtrer!mais dans le main ce code m'affiche un erreur j'ai essayé plusieurs fois de trouver la faille mais sans résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	Liste2=filtrer(Liste,Nb);
     
    	Nbvar=Nbvariable(Liste2);//Nbvariable est une fonction qui compte le      nombre de variable dans ma liste //
     
    	printf("\n Nombre de différentes variables = %d",Nbvar);
    Et c'est quoi l'erreur ? Tu veux dire une réponse erronnée, ou une erreur indiquée par le langage ?

    Denis

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Grenade

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2012
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par denispir Voir le message
    Et c'est quoi l'erreur ? Tu veux dire une réponse erronnée, ou une erreur indiquée par le langage ?

    Denis
    Bonsoir Denis,
    c'est une erreur indiquée par le langage
    pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste2=filtrer(Liste,Nb);
    il m'affiche l'erreur suivanteno match for 'operator=' in 'Liste2 = filtre r(Liste, Nb)'
    et pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nbvar=Nbvariable(Liste2);
    cannot convert `F' to `F*' for argument `1' to `int Nbvariable(F*)'

  10. #10
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Liste2=filtrer(Liste,Nb);
    il m'affiche l'erreur suivanteno match for 'operator=' in 'Liste2 = filtre r(Liste, Nb)'
    => filter renvois un F* alors que Liste2 est un F.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nbvar=Nbvariable(Liste2);
    cannot convert `F' to `F*' for argument `1' to `int Nbvariable(F*)'
    => Tu transmet à NbVariable un F alors qu'il demande un F*. Pour résoudre le problème il suffit de rajouter un petit '&' devant le nom de ta variable lors de l'appel de la fonction.

Discussions similaires

  1. Droper une sequence.
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 27/04/2005, 10h50
  2. [XSD] Elements de meme nom dans une sequence
    Par MathiasM dans le forum Valider
    Réponses: 2
    Dernier message: 14/04/2005, 09h33
  3. [PL/SQL] Recuperer le nouveau numero d'une sequence
    Par Tofalu dans le forum Oracle
    Réponses: 3
    Dernier message: 23/02/2005, 11h47
  4. [bioinfo] reverse complementaire d'une sequence
    Par perlgirl dans le forum Bioinformatique
    Réponses: 6
    Dernier message: 18/06/2004, 11h22
  5. peut-on savoir si un champ a une sequence??
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 14h54

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