Supprimer les valeurs nulles d'un tableau
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 :
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
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
5 réponses
-
Qu'est-ce que ça veut dire "supprimer des valeurs" ? Tu peux toujours écrire des zéros dans la fin du tableau si tu considères que ça supprime quelque chose, mais ça n'a absolument aucun intérêt.
for (;j<nbVal;j++) tab[j]=0;
Pour moi, ton problème est résolu dès que tu as mis tes nombres non nuls au début du tableau et que tu sais où s'arrête la partie utile.
Au passage, c'est de tab[j] à tab[nbVal-1], pas tab[nbVal]