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 :

saisie d'une seule ocurrence dans un tableau


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut saisie d'une seule ocurrence dans un tableau
    salut,
    à partir d'un fichier process.txt de la forme:
    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
     
    10  11  2
    10  62  4
    10  6  4
    10  12  3
    12  5  4
    10  13  2
    24  3  8
    10  51  5
    11  4  2
    12  6  4
    10  9  2
    12  4  7
    13  5  1
    16  5  4
    j'obtiens comme affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    10 10 12 24 11 10 13 16 16
    sachant que je veux avoir dans mon tableau "t" une seule ocurrence de chaque élément (le plus à gauche), voici 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
    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
     
    L_PROCESSUS*cree_l_processus(L_PROCESSUS*tete)
    {
    	FILE*f;
    	char s[100];
    	int i=1,csa=0,cse=0,q=0,ent;
    	int t[15];
    	int trouv=0;
    	int n=0; //taille tableau filtré des composants
    	PROCESSUS *a;
    	L_PROCESSUS*nouv;
    	nouv=(L_PROCESSUS*)malloc(sizeof(L_PROCESSUS));
    	nouv->suiv=NULL;
    	f=fopen("c:\\process.txt","r");
    	rewind(f);
    	/*creation du tableau contenant tous les composants: lecture du
    	fichier process.txt et remplissage, avec une suele occurence 
    	de chaque composant*/
    	/*fgets(s,100,f);
    	sscanf(s,"%4d",&ent);
    	t[0]=ent;
    	n++;*/
     
    	while(!feof(f))
    	{
    		//printf("ahla");
    		fgets(s,100,f);
    		sscanf(s,"%4d",&ent);
    		for (int aa=0;aa<n;aa++)
    		{
    			if(ent==t[aa]) 
    			{
    				fgets(s,100,f);
    				trouv=1;
    				sscanf(s,"%4d",&ent);//deja existe
    //passe a la  ligne suivante 
    			}
    		}
    		if((aa==n)) //atteint la fin du tableau.l'element n'existait pas
    			//	au tableau; on l'ajoute.
     
    		{t[n]=ent;
    			n++;}
     
    		//fgets(s,100,f);	
     
    	}
    	//printf("%d\n" ,t[n-1]);
    	//printf("%d\n" ,n);
    	for (int aaa=0;aaa<n;aaa++)
    		printf("%d ",t[aaa]);  
     
    	/*1er element*/
    	rewind(f);
    	fgets(s,100,f);
    	sscanf(s,"%4d %4d %4d",&nouv->a.composant,&nouv->a.compose[0],&nouv->a.qte[0]);
    	tete=nouv;
     
    	while(!feof(f))
    	{
    		fgets(s,100,f);
    		sscanf(s,"%4d %4d %4d",&csa,&cse,&q);
    		if(csa==nouv->a.composant)
    		{
    			nouv->a.compose[i]=cse;
    			nouv->a.qte[i]=q;
    			i++;
    		}
    	}
     
    return(tete);
    }
    excusez mes commentaires

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Utilise une hash table pour faire cela, c'est plus élégant.
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par ze_key
    Utilises une hash table pour faire cela, c'est plus éléguant.
    En C, les tables de hachages n'existe pas
    La glib propose ce genre de fonctions : GHashTable

    zhoom qu'elle est le problème?

  4. #4
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Oui mais il existe tout un tas d'implémentation plus ou moins complexe suivant les besoins ex: http://www.cl.cam.ac.uk/users/cwc22/hashtable/
    Steve Hostettler
    est ton ami(e) et le tag aussi.

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L_PROCESSUS*cree_l_processus(L_PROCESSUS*tete)
    Tu sais tu a le droit de mettre des espaces, cela devient un peu plus lisible apres.

    Un peu plus d'info sur ton probleme a part un "ca marche pas".
    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]

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    de plus, les définitions des types PROCESSUS etc. pourraient nous être utiles: On ne va pas exécuter le rituel d'Ashkente pour les obtenir...
    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.

  7. #7
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bon voila plus simplement:
    a partir d'un tableau où les éléments apparaissent plusieurs fois (ex:
    10 15 10 4 6 5 10 15 )
    je veux créer un tableau qui ne comporte q'une ocurrence de chaque élément. ( je me rappelle avoir fait ça 4 ans plus tôt )

  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
    Citation Envoyé par zhoom
    bon voila plus simplement:
    a partir d'un tableau où les éléments apparaissent plusieurs fois (ex:
    10 15 10 4 6 5 10 15 )
    je veux créer un tableau qui ne comporte q'une ocurrence de chaque élément. ( je me rappelle avoir fait ça 4 ans plus tôt )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Soit a le tableau a parcourir
    Soit b le tableau a remplir
    Pour tous les elements de a
    Faire
        Si element pas present dans b (parcours de b)
            Rajouter l'element de a dans b
        Fin si
    Fin pour
    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
    Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merci, mais j'aimerais bien que quelqu'un puisse me le donner en code C

  10. #10
    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 zhoom
    merci, mais j'aimerais bien que quelqu'un puisse me le donner en code C
    Oui bien evidemment tu patiente 2 secondes je te fais ca.
    Non mais et puis quoi encore, tu reves un peu la non?
    Tu mérites une en place public et puis apres tu
    Reviens apres avoir lu les regles, nous ne sommes pas la pour faire le code à ta place.
    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]

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/11/2011, 19h23
  2. VBA - Limiter la saisie d'une seule virgule ou point dans une TextBox
    Par natab dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/08/2011, 13h00
  3. Cocher une seule checkbox dans un tableau html
    Par arthuro45 dans le forum jQuery
    Réponses: 11
    Dernier message: 03/06/2011, 08h50
  4. résultat d'une requete SQL dans un tableau en JSP
    Par Paradoxys dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/04/2005, 16h17
  5. [HTML] Se placer à une ligne précise dans un tableau
    Par seb55555 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 28/10/2004, 15h06

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