Si une case du tableau est égal a 0
varfendell
Messages postés
3259
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
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
-
Salut,
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???
-
Tu 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.