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 :

Supprimer des valeurs d'un tableau


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 7
    Points
    7
    Par défaut Supprimer des valeurs d'un tableau
    Bonjour,
    J'ai le tableau suivant:
    19 5 3 0 0
    20 2 0 0 0
    50 1 1 0 0

    J'aimerais juste supprimer les 0 de façon à ce que ça fasse:
    19 5 3
    20 2
    50 1 1

    Merci Beaucoup
    ps : J'ai vu des routines sur le forum mais ça me parait super compliqué et moi je veux juste enlever les 0 mais garder la même matrice

  2. #2
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 528
    Points
    3 528
    Par défaut
    Quelle est la variable contenant cette matrice ?

    Il faut un peu plus de description du conteneur de ta matrice !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    J'ai extrait d'un fichier.txt les valeurs en chaine de caractere, puis j'ai fait strtof:
    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
     
    	float f1, f2, f3,f4,f5;
    			f1 = strtof (tampon, &pEnd);
    			f2 = strtof (pEnd,   &pEnd);
    			f3 = strtof (pEnd,   &pEnd);
    			f4 = strtof (pEnd,   &pEnd);
    			f5 = strtof (pEnd,   NULL );
     
    /*   printf ("%f %f %f", f1 ,f2,f3); */
     
    			float tab[n+50][5];
    			tab[i][0] =f1;
    			tab[i][1] =f2;
    			tab[i][2] =f3;
    			tab[i][3] =f4;
    			tab[i][4] =f5;

  4. #4
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 528
    Points
    3 528
    Par défaut
    J'allais écrire une bêtise, je me suis retenu.

    Tu souhaites conserver la matrice avec les valeurs, et seulement ne pas afficher les 0 à l'écran ?
    Et si un 0 se trouve entre 2 valeurs ?
    Par exemple : 42 0 69 0 0
    Doit-il afficher : 42 69 ? Ou 42 0 69 ?

    Ou tu souhaites ne pas stocker du tout les 0 ?... mais dans ce cas, quel est le comportement à adopter ? mettre une autre valeur ?...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    En fait, je veux effectivement enlever les 0 de la matrice
    ex : 42 69 0 --> 42 69
    La situation ou il y a un 0 entre 2 chiffres n'est pas presente dans mon fichier.
    Cependant au cas ou, je voudrais que la case reste vide

    42 | 0 | 69 --> 42 | | 69

    Est il possible?

    Merci

  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 136
    Points
    23 136
    Par défaut
    @Trax31 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float f1, f2, f3,f4,f5;
    Utilise un tableau de float : float tableau[5]; .

    Tu pourras ainsi faire des boucles pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    f1 = strtof (tampon, &pEnd);
    			f2 = strtof (pEnd,   &pEnd);
    			f3 = strtof (pEnd,   &pEnd);
    			f4 = strtof (pEnd,   &pEnd);
    			f5 = strtof (pEnd,   NULL );
     
    			float tab[n+50][5];
    			tab[i][0] =f1;
    			tab[i][1] =f2;
    			tab[i][2] =f3;
    			tab[i][3] =f4;
    			tab[i][4] =f5;

  7. #7
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 528
    Points
    3 528
    Par défaut
    En fait, tu ne pourras pas supprimer les 0 de la matrice, il doit TOUJOURS y avoir une valeur dans une case (ou au moins une qui sert à définir qu'il n'y a rien).
    Le "vide" n'existe pas.

    Cependant, tu peux juste empêcher leur affichage lorsque tu print.
    Si c'est le cas, il suffit juste de tester si la valeur est différente de 0, si oui : on affiche

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Mai 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2013
    Messages : 21
    Points : 7
    Points
    7
    Par défaut
    Ok

    Merci!!!!

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Si je puis me permettre, il existe une façon de stocker les matrices que l'on appelle creuses ( avec pleins de 0 dedans )
    Cette structure s'appelle CSR pour Compressed Sparse Row ( il en existe une autre qui est de la forme CSC qui agit sur les colonnes ).

    Le BUT de cette façon de stocker la matrice est de ne conserver que les non-zeros. Cela utilise 3 tableaux : deux tableaux de int et un tableau de float/double. Ainsi ta matrice stockée en format CSR est représentée ainsi:
    Values : [19,5,3,20,2,50,1,1]
    ColInd : [0,1,2,0,1,0,1,2]
    RowPtr : [0,3,5,8]

    Et cela se lit de la manière suivante :
    pour la ligne 0 je regarde la case 0 de RowPtr et la case 0+1 : cela me dit que mes valeurs vont de 0 à 3 dans les tableaux Values et ColInd ( 3 non compris ).
    Ensuite dans colInd j'obtiens 0,1,2 qui correspondent aux colonnes dans la matrice et enfin les valeurs 19,5,3 ( données dans le même ordre.

    Je pense que ce format se prête très bien à ce que tu cherches.
    Si tu as besoin d'autres informations, n'hésite pas.

Discussions similaires

  1. [WD10] Afficher des valeurs dans un tableau
    Par dj-julio dans le forum WinDev
    Réponses: 4
    Dernier message: 19/03/2014, 11h32
  2. Supprimer des valeurs d'un tableau
    Par rollergirl dans le forum Langage
    Réponses: 16
    Dernier message: 03/09/2010, 22h27
  3. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41
  4. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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