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 11653 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11653 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
}
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
}
A voir également:
- Si une case du tableau est égal a 0
- Tableau word - Guide
- Tableau ascii - Guide
- Trier un tableau excel - Guide
- Imprimer tableau excel sur une page - Guide
- Comment remettre son pc a 0 - Guide
4 réponses
Salut,
Tu fais tout simplement une fonction qui te renvoie 0 si le tableau contient au moins un 0.
Du genre :
Et dans la fonction principale :
Cdlt
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 :
Et pour l'appeler :
Il te reste plus qu'à rappeler cette fonction tant qu'elle ne renvoie pas 0 et tous les nbElt scanf.
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.