Si une case du tableau est égal a 0
Bonjour,
je doit faire tourner un programme, jusque toute les case d'un tableau soit differente de 0 (toute les case sont initialement mise a 0).
Comment faire autrement que ça:
while (test = 1 || nbdeplacement <= 10000)
{
for (i = 0; i <= m-1; i++)
{
for (j = 0; j <= n-1; j++)
{
if (tab[i][j] != 0)
{
test = 0;
}
}
}
reste du code
}
--
La vérité appartient à ceux qui la cherchent et non point à ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre bonheur: pensez aux autres^^')
je doit faire tourner un programme, jusque toute les case d'un tableau soit differente de 0 (toute les case sont initialement mise a 0).
Comment faire autrement que ça:
while (test = 1 || nbdeplacement <= 10000)
{
for (i = 0; i <= m-1; i++)
{
for (j = 0; j <= n-1; j++)
{
if (tab[i][j] != 0)
{
test = 0;
}
}
}
reste du code
}
--
La vérité appartient à ceux qui la cherchent et non point à ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre bonheur: pensez aux autres^^')
Configuration: Windows Vista Firefox 3.0.5
4 réponses
-
ContributeurSalut,
Tu fais tout simplement une fonction qui te renvoie 0 si le tableau contient au moins un 0.
Du genre :int tabInitialized(const int tab, const int lin, const int col) { for(int i=0;i<lin;i++) for(int j=0;j<col;j++) if(tab[i][j]==0) return 0; return 1; }
Et dans la fonction principale :while( ! tabInitialized(tab, n, m) { //code }
Cdlt -
oui, mais sa reviens exactement au même, il faut reparcourir le tableau a chaque fois que j'effectue un déplacement.
-
oui, en effet, sa réduirait considérablement le nombre de calcul. Il n'y a pas de fonction prédéfini qui permette de savoir si un chiffre est dans un tableau???
-
ContributeurTu as memchr, mais cela marche par octets et non par sizeof(int). Donc., le résultat sera erroné sans précaution particulière. Le plus simple est de te faire la fonction. Par exemple :
int nbDsTab(const int elt, const int tab, const int lin, const int col) { int nbElt=0; for(int i=0;i<lin;i++) for(int j=0;j<col;j++) if(tab[i][j]==elt) nbElt++; return nbElt; }
Et pour l'appeler :int nbElt=nbDsTab(0,tab,n,m);
Il te reste plus qu'à rappeler cette fonction tant qu'elle ne renvoie pas 0 et tous les nbElt scanf.