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 :

[Débutant] procédure fusion


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [Débutant] procédure fusion
    salut a tous,
    en fait j'ai un probleme je suis en exmane dans une semaine et j'ai eu un enoncé qui ressemble for't a celui que j'orai.
    celui comprend une double liste chainée que je dois triée et ensuite je dois mettree en commun deux fichiers. et je me demandais si il n'y aurait pas une alternative plus facile que la procédure fusion pour reunir ces deux fichiers la.
    Es ce que quelqu'un saurait regarder a mon code en lien pour me dire si est bon.

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Moi ça me parait bien, à toi de faire le C correspondant.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    merci beaucoup mais es ce que il n y aurait pas une facon moins longue pour fusionner ces deux fichiers ensemble?
    et j'ai aussi une autre question si dans mes fichiers il y a des données que l'on ne retrouve pas dans les deux es ce que avec se "code" je retrouverais toute les données meme si elles ne sont pas communes aux deux?

  4. #4
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par lau2708
    merci beaucoup mais es ce que il n y aurait pas une facon moins longue pour fusionner ces deux fichiers ensemble?
    et j'ai aussi une autre question si dans mes fichiers il y a des données que l'on ne retrouve pas dans les deux es ce que avec se "code" je retrouverais toute les données meme si elles ne sont pas communes aux deux?
    Le code parait long parce que c'est en algo en C ca devrait etre moins long.

    Pour le reste pas compris, si un nombre n'est pas dans le fichier 1 ou 2, est-ce qu'il sera quand même dans le fichier de sortie ? C'est pas très possible ça.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  5. #5
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    en fait ce que je voulais c'est un lien avec mon énoncé:
    je m'explique:
    en fait à la base on nous donne deux fichiers qui continiennent chacun une liste différente.
    Mais certains des éléments sont repris dans les deux listes et d'autres non.
    Ma question est donc es ce que une fois fusionner le fichier de sortie contiendra toute les données ou juste les données commune aux deux listes de départ.


    Une nouvelle question me vient en tête comment es ce que je devrait faire pour additionner deux nombres qui (quantité, par exemple dans le F1 on a une donnée:banane avec une quantité de 50 et dans le F2 banane et quantité 25)
    font référence à une data??il faudrait que dans le fichier de sortie ces deux données n'en fasse plus que une.

  6. #6
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Je viens de relire ton algo et je comprends pas la 2ème partie celle qui commence par si(EOF(f2)).

    Pourquoi ce test ? Et pourquoi pas si(EOF(f1)) ?

    Parce qu'en suivant ton algo avec ces 2 fichiers

    f1 : 2 3
    f2 : 98 99

    Tu écris dans le fichier final juste 2 et 3 pas 98 99.

    Moi apres le gros while j'aurais fait un truc du genre.

    Je regarde quel est le fichier qui est fini et pour l'autre ben je lis tant qu'il n'est pas fini et j'écris dans le fichier tmp. De plus pas besoin de faire des tests avec ton nt car si ton algo est juste tous les nombes restant dans le fichier non fini sont forcément inférieurs au dernier nombre lu dans l'autre fichier.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  7. #7
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    oui je pense que tu as raison par rapport à ce que tu ferais mais es tu sur quand a ce que tu dis pour ce qui resterait dans mon fichier final?
    (mais es ce que tu saurais modifier mon fichier word parce que je ne vois pas bien ce que tu veux dire par la stp?)

  8. #8
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Voilà je mettrais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ecrire_f(ftmp, nt) ;
    si (EOF(f2))
    	tant que (NON EOF(f1))
    		lire(f1, nb) ;
    		ecrire_f(ftmp, nb) ;
    	fin tant que
    sinon
    	tant que (NON EOF(f2))
    		lire(f2, nb) ;
    		ecrire_f(ftmp, nb) ;
    	fin tant que
    fin si
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  9. #9
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par lau2708
    mais es tu sur quand a ce que tu dis pour ce qui resterait dans mon fichier final?
    Ce n'est pas à moi de l'être mais à toi.

    Réfléchi une seconde tes 2 fichiers sont triés donc pour chaque fichier un nombre à la position n et < à n+1. Tu es d'accord ?

    Donc si je termine un fichier le dernier chiffre est forcement < au chiffre actuel de ton 2ème fichier (test si(nb1<nb2)).

    Donc à toi d'en déduire le reste.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  10. #10
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    en tout cas un grand merci pour ton aide c'est vraiment super que l'on puisse avoir de l'aide mais surout en aussi peu de tmeps et donc ce que tu as mis ci-dessus tu le mettrais a la place de ceci?

    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
    si (EOF(f2)) alors ! on atteint la fin du fichier 2 et nt na pas été traité !
     
        	    début
    tant que (NON EOF(f1)) boucle
            			lire_f(f1,nb1);
    			si (nt < nb1) alors 
    			  début
    écrire_f(ftmp,nt);
    nt  MAXINT;
    			  fin;
    			finsi;
    			écrire_f (ftmp,nb1);
          		finboucle;
        	    fin
      	   sinon
         	    début
    tant que (NON EOF(f2)) boucle
            			lire_f(f2,nb2);
    			si (nt < nb2) alors 
    			  début
    écrire_f(ftmp,nt);
    nt  MAXINT;
    			  fin;
    			finsi;
            			écrire_f (ftmp,nb2);			
          		finboucle;
        	    fin;
      	finsi;

  11. #11
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Les balises code gardent l'indentation pas les balises quote

    Oui comme ça mais comme je te l'ai dis plus besoin de faire des tests avec nt > < c'est inutile à ce niveau.

    Garde exactement ce que j'ai écris ça devrais fonctionner pour en avoir le coeur net, soit tu fais une trace d'exécution avec des fichiers au pif.

    Soit tu fais l'équivalent en C et tu essayes le programme.

    Voilà.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  12. #12
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    ca va merci encore je vais remettre le tout en forme avec ce que tu m'as ecrit et alors retirer les tests de nt.

    (ok je vais retenir pour les balises codes)

  13. #13
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    La version finale donnerait donc plus ou moins ceci:
    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
    VAR 	f1 : 		fichier de texte;
              	f2 : 		fichier de texte;
              	nomftmp : 	alpha;
              	ftmp : 		fichier de texte;
              	nb1,nb2,i, nt : 	entier;
              	c : 		caractère;
     
    début
     	c '0'; 
     	assigne(f1,nomf1);
      	ouvrir (f1,lecture);
     	assigne (f2,nomf2);
      	ouvrir (f2,lecture);
      	nomftmp = "~fusion.txt");
      	assigne(ftmp,nomftmp);
      	ouvrir(ftmp,écriture);
      	tant que (NON EOF(f1) et NON EOF(f2)) boucle
        		si (c='0') alors 
         	  	    début    
            			lire_f (f1,nb1);
            		  	lire_f (f2,nb2);
                  	    fin
       	 	  sinon
          			si (c='1') alors
            				lire_f(f1,nb1)
          			  sinon
           			 	lire_f (f2,nb2);
        		finsi;
        		si (nb1>nb2) alors
          	  	  début
            			écrire_f(ftmp,nb2);
    			nt  nb1;
            			c '2'
          	  	  fin
        		 sinon
          	  	  début
            			écrire_f(ftmp,nb1);
    			nt  nb2;
            			c '1';
          	  	  fin
        		finsi;
      	finboucle; ! un des deux fichiers est fini !
     
    ecrire_f(ftmp, nt) ;
    si (EOF(f2))
    	tant que (NON EOF(f1))
    		lire(f1, nb) ;
    		ecrire_f(ftmp, nb) ;
    	fin tant que
    sinon
    	tant que (NON EOF(f2))
    		lire(f2, nb) ;
    		ecrire_f(ftmp, nb) ;
    	fin tant que
    fin si
      	fermer tout; ! on se comprend ;-) !
      	supprimer(f1);
      	supprimer(f2);
      	renommer(ftmp,f1);
    FIN MODULE.
    aller encore merci

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

Discussions similaires

  1. [Débutant] Procédure stockée uniquement pour un schéma
    Par peaceinpal dans le forum Administration
    Réponses: 5
    Dernier message: 15/01/2009, 11h19
  2. Réponses: 7
    Dernier message: 23/10/2005, 22h38
  3. [Débutant]Procédure avec paramètres entrée / sortie
    Par jeromejanson dans le forum Langage
    Réponses: 13
    Dernier message: 10/10/2005, 08h30
  4. [Débutant] Création de procédure stockée
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2004, 18h19
  5. [Débutant] Procédures stockées
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/05/2004, 10h26

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