Supprimer les valeurs nulles d'un tableau

Fermé
Gengoul94 Messages postés 22 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 28 octobre 2011 - 27 oct. 2011 à 00:43
 le père - 28 oct. 2011 à 23:38
Bonjour à tous,

Je suis en 1ère année d'IUT informatique et je dois réaliser un petit programme qui permet de saisir des valeurs dans un tableau puis de supprimer les valeurs négatives. C'est là que je bloque...
Voici ce que j'ai réussi à faire :

#include <iostream>
 
using namespace std;
 
int main()
{
    const float STOP=-999.0;
    const int MAXR=10;
    float tab[MAXR], val;
    int i, j=0, nbVal=0;
    cout << "Entrez un reel " << STOP << " pour finir." << endl;
    cin >> val;
    while (val!=STOP && (nbVal < MAXR))
    {
        tab[nbVal]=val;
        nbVal++;
        cin >> val;
    }
    if (val != STOP)
    {
        cout << "Il n'est pas possible d'enregistrer la derniere valeur saisie (" << val << ")." << endl;
    }
    for (i=0 ; i < nbVal; i++)
    {
        cout << tab[i] << " ";
    }
    for (i=0 ; i < nbVal ; i++)
    {
        if (tab[i]!=0)
        {
            tab[j] = tab[i];
            j = j++;
        }
    }
    cout << endl << "Voici vos valeurs nettoyees des valeurs nulles (" << nbVal << ") :" << endl;
    for (i=0 ; i < nbVal ; i++)
    {
        cout << tab[i] << " ";
    }
    return 0;
}


Le problème est que je n'arrive pas à arrêter la boucle au bon moment.
En effet, en entrant 14 0 -5 2 0 0 1 -2 j'obtiens :
"Voici vos valeurs nettoyees des valeurs nulles (8) :
14 -5 2 1 -2 0 1 -2"
J'ai fait d'autres tentatives mais rien de concluant...
J'espère donc que vous voudrez bien m'aider ou me donner des pistes :)

Merci d'avance

A voir également:

5 réponses

Bonjour

Ça marche presque, ton programme.
Seulement, quand tu as éliminé les 0, tu n'as plus nbVal nombres, mais j. Ta boucle d'affichage du résultat final doit donc avoir comme condition i<j et non pas i<nbVal.

D'autre part, j=j++; est inutile. j++; suffit pour incrémenter j.
1