Parcours circulaire d'un tableau
Résolu
leoMercury
Messages postés
3
Statut
Membre
-
leoMercury Messages postés 3 Statut Membre -
leoMercury Messages postés 3 Statut Membre -
Bonjour,
J'ai un problème de programmation, mais c'est plus un problème d'algorithme que de langage.
En gros, c'est un parcours circulaire d'un tableau.
Je dois obtenir, pour tout i entre 1 et tab.size() ceci :
i = 4 => j parcours le tableau en j=1 et j=2 et j= 3
i=5 => j = 2, puis, j=3, puis j=4
...
i= tableau.size() => j= tableau.size-3, puis j= tableau.size()-2, puis j= tableau.size()-1
Et après c'est là que le problème se pose :
Le parcours est circulaire, donc :
i=1 => j=tableau.size()-2, puis j=tableau.size()-1, puis j=tableau.size()
i=2 => j=tableau.size()-1, puis j=tableau.size(), puis j=1
....
Le but de tout ça est de créer à partir d'un tableau de char (c-à-d une chaine de caractère), toutes les sous-chaine de longueur 3, et ceci circulaire.
J'ai commencé à faire une boucle for pour i qui parcours tous les caractère et une boucle pour j qui parcours les indices du tableau suivant la valeur de l'indice de i. Mais c'est là que je suis coincé. Il faut trouver la bonne équation avec le modulo, je pense. S'il-vous-plat aidez-moi c'est assez urgent.
Voilà ce que j'ai fait (les caractères sont stockés à partir de l'indice 1):
string s = "";
for (int i=1, i<tab.size() ; i++)
{
s = tab[i]
for (int j=i% ??? ; j<i% ??? ; j++)
s += tab[j];
}
Merci d'avance.
J'ai un problème de programmation, mais c'est plus un problème d'algorithme que de langage.
En gros, c'est un parcours circulaire d'un tableau.
Je dois obtenir, pour tout i entre 1 et tab.size() ceci :
i = 4 => j parcours le tableau en j=1 et j=2 et j= 3
i=5 => j = 2, puis, j=3, puis j=4
...
i= tableau.size() => j= tableau.size-3, puis j= tableau.size()-2, puis j= tableau.size()-1
Et après c'est là que le problème se pose :
Le parcours est circulaire, donc :
i=1 => j=tableau.size()-2, puis j=tableau.size()-1, puis j=tableau.size()
i=2 => j=tableau.size()-1, puis j=tableau.size(), puis j=1
....
Le but de tout ça est de créer à partir d'un tableau de char (c-à-d une chaine de caractère), toutes les sous-chaine de longueur 3, et ceci circulaire.
J'ai commencé à faire une boucle for pour i qui parcours tous les caractère et une boucle pour j qui parcours les indices du tableau suivant la valeur de l'indice de i. Mais c'est là que je suis coincé. Il faut trouver la bonne équation avec le modulo, je pense. S'il-vous-plat aidez-moi c'est assez urgent.
Voilà ce que j'ai fait (les caractères sont stockés à partir de l'indice 1):
string s = "";
for (int i=1, i<tab.size() ; i++)
{
s = tab[i]
for (int j=i% ??? ; j<i% ??? ; j++)
s += tab[j];
}
Merci d'avance.
A voir également:
- Parcours circulaire d'un tableau
- Tableau word - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Imprimer un tableau excel - Guide
- Tableau croisé dynamique - Guide
3 réponses
Bonjour
Sans te casser la tête avec des calculs de modulo (qui peuvent certainement très bien marcher)..
Rajoute à la fin de ta chaîne les deux caractères du début.
Sans te casser la tête avec des calculs de modulo (qui peuvent certainement très bien marcher)..
Rajoute à la fin de ta chaîne les deux caractères du début.
Ça aurait été une solution, mais...
Le problème, c'est que quand j'ai écrit 3, c'était juste pour l'exemple. En réalité la longueur de la sous-chaine est un paramètre (qui dépend de l'utilisateur). Ça peut être un grand nombre, ce qui rend la solution non optimale pour le programme. Voir tout planter lorsque le prof va tester avec de grandes chaines.
Le problème, c'est que quand j'ai écrit 3, c'était juste pour l'exemple. En réalité la longueur de la sous-chaine est un paramètre (qui dépend de l'utilisateur). Ça peut être un grand nombre, ce qui rend la solution non optimale pour le programme. Voir tout planter lorsque le prof va tester avec de grandes chaines.