Soit a<=b deux entiers et c un autre entier.
Soit int t[c];
Je voudrais faire une sorte de boucle sur tout les t tel que
a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Richard Delorme
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }
-- Richard
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier.
Soit int t[c];
Je voudrais faire une sorte de boucle sur tout les t tel que
a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes
(constantes) ou des variables ? Que signifie
for (t[1]=a,b,a++)
En C, j'aurais plutôt écrit quelque chose comme
for (t[1] = a; t[1] <= b; ++t[1])
Sinon je pense que la solution à ton problème est la récursion, avec
quelque chose comme ici (je prends les t comme des bornes fixes):
void loop(const int t[], const int c, const int i) {
int j;
if (i < c) {
for (j = t[i - 1]; j < t[i]; ++j) {
loop(t, c, i + 1);
// code manquant utilisant j ?
}
}
}
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }
-- Richard
Tanguy Briançon
On 15/06/2012 08:34, Richard Delorme wrote:
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle. Je veux faire une boucle sur tout les t tels que a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième argument de la boucle for entre ++t[1] et t[1]++?
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code... Je veux pourtant faire une boucle sur les t. Sinon que signifie le const?
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }
On 15/06/2012 08:34, Richard Delorme wrote:
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier.
Soit int t[c];
Je voudrais faire une sorte de boucle sur tout les t tel que
a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes
(constantes) ou des variables ? Que signifie
for (t[1]=a,b,a++)
En C, j'aurais plutôt écrit quelque chose comme
for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle.
Je veux faire une boucle sur tout les t tels que
a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième
argument de la boucle for entre ++t[1] et t[1]++?
Sinon je pense que la solution à ton problème est la récursion, avec
quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code...
Je veux pourtant faire une boucle sur les t. Sinon que signifie le
const?
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) {
int j;
if (i < c) {
for (j = t[i - 1]; j < t[i]; ++j) {
loop(t, c, i + 1);
// code manquant utilisant j ?
}
}
}
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle. Je veux faire une boucle sur tout les t tels que a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième argument de la boucle for entre ++t[1] et t[1]++?
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code... Je veux pourtant faire une boucle sur les t. Sinon que signifie le const?
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }
Richard Delorme
Le 15/06/2012 09:45, Tanguy Briançon a écrit :
On 15/06/2012 08:34, Richard Delorme wrote:
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle. Je veux faire une boucle sur tout les t tels que a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième argument de la boucle for entre ++t[1] et t[1]++?
++t[1] est équivalent à t[1] <- t[1] + 1 retourner t[1]
en théorie, t[1]++ est donc plus compliqué que ++t[1], en pratique les optimisateurs savent supprimer du code qui n'est pas utilisé et les deux sont équivalent.
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code...
si je comprends, tu veux quelque chose comme :
void loop(const int a, const int b, const int c, int t[], cont int i) { if (i <= c) { for (t[i] = a; i <= b; ++t[i]) { loop(t[i], b, c, t, i + 1): } } }
int main(void) { int t[12];
loop(1, 42, 11, t, 1); }
Je veux pourtant faire une boucle sur les t. Sinon que signifie le const?
que l'on peut lire la valeur de la variable mais qu'on ne peut pas la modifier. L'intérêt est que l'on sait si une valeur reste fixe ou peu être modifié dans le programme. Ça permet aussi au compilateur de mieux optimiser le programme, mais c'est secondaire.
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }
Le 15/06/2012 09:45, Tanguy Briançon a écrit :
On 15/06/2012 08:34, Richard Delorme wrote:
Le 15/06/2012 01:12, Tanguy Briançon a écrit :
Bonjour,
Soit a<=b deux entiers et c un autre entier.
Soit int t[c];
Je voudrais faire une sorte de boucle sur tout les t tel que
a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes
(constantes) ou des variables ? Que signifie
for (t[1]=a,b,a++)
En C, j'aurais plutôt écrit quelque chose comme
for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle.
Je veux faire une boucle sur tout les t tels que
a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième
argument de la boucle for entre ++t[1] et t[1]++?
++t[1] est équivalent à
t[1] <- t[1] + 1
retourner t[1]
en théorie, t[1]++ est donc plus compliqué que ++t[1], en pratique les
optimisateurs savent supprimer du code qui n'est pas utilisé et les deux
sont équivalent.
Sinon je pense que la solution à ton problème est la récursion, avec
quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code...
si je comprends, tu veux quelque chose comme :
void loop(const int a, const int b, const int c, int t[], cont int i) {
if (i <= c) {
for (t[i] = a; i <= b; ++t[i]) {
loop(t[i], b, c, t, i + 1):
}
}
}
int main(void)
{
int t[12];
loop(1, 42, 11, t, 1);
}
Je veux pourtant faire une boucle sur les t. Sinon que signifie le
const?
que l'on peut lire la valeur de la variable mais qu'on ne peut pas la
modifier. L'intérêt est que l'on sait si une valeur reste fixe ou peu
être modifié dans le programme. Ça permet aussi au compilateur de mieux
optimiser le programme, mais c'est secondaire.
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) {
int j;
if (i < c) {
for (j = t[i - 1]; j < t[i]; ++j) {
loop(t, c, i + 1);
// code manquant utilisant j ?
}
}
}
Soit a<=b deux entiers et c un autre entier. Soit int t[c]; Je voudrais faire une sorte de boucle sur tout les t tel que a<=t[1]<=t[2]....t[c]<=b. Si c est fixé il n'y a pas de problème:
Mais si on ne connait pas c, comment faire? Une idée?
Bonjour,
Mon message était en effet très mal formulé et bourré de fautes...
J'ai pas trop compris le problème. Les a, b, t[c] sont des bornes fixes (constantes) ou des variables ? Que signifie for (t[1]=a,b,a++) En C, j'aurais plutôt écrit quelque chose comme for (t[1] = a; t[1] <= b; ++t[1])
Oui en effet... Les borrnes sont a,b,c. t est l'indice de la boucle. Je veux faire une boucle sur tout les t tels que a<=t[1]<=.....<=t[c]<=b.
Petite question quelle différence dans le troisième argument de la boucle for entre ++t[1] et t[1]++?
++t[1] est équivalent à t[1] <- t[1] + 1 retourner t[1]
en théorie, t[1]++ est donc plus compliqué que ++t[1], en pratique les optimisateurs savent supprimer du code qui n'est pas utilisé et les deux sont équivalent.
Sinon je pense que la solution à ton problème est la récursion, avec quelque chose comme ici (je prends les t comme des bornes fixes):
Je n'ai pas compris ton code...
si je comprends, tu veux quelque chose comme :
void loop(const int a, const int b, const int c, int t[], cont int i) { if (i <= c) { for (t[i] = a; i <= b; ++t[i]) { loop(t[i], b, c, t, i + 1): } } }
int main(void) { int t[12];
loop(1, 42, 11, t, 1); }
Je veux pourtant faire une boucle sur les t. Sinon que signifie le const?
que l'on peut lire la valeur de la variable mais qu'on ne peut pas la modifier. L'intérêt est que l'on sait si une valeur reste fixe ou peu être modifié dans le programme. Ça permet aussi au compilateur de mieux optimiser le programme, mais c'est secondaire.
Désolé pour ces questions idiotes...
void loop(const int t[], const int c, const int i) { int j; if (i < c) { for (j = t[i - 1]; j < t[i]; ++j) { loop(t, c, i + 1); // code manquant utilisant j ? } } }