Parcours circulaire d'un tableau

Résolu/Fermé
leoMercury Messages postés 3 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 11 novembre 2013 - Modifié par leoMercury le 10/11/2013 à 14:24
leoMercury Messages postés 3 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 11 novembre 2013 - 11 nov. 2013 à 23:21
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.


A voir également:

3 réponses

Utilisateur anonyme
10 nov. 2013 à 15:26
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.
1
leoMercury Messages postés 3 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 11 novembre 2013
Modifié par leoMercury le 10/11/2013 à 17:21
Ç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.
0
leoMercury Messages postés 3 Date d'inscription dimanche 10 novembre 2013 Statut Membre Dernière intervention 11 novembre 2013
11 nov. 2013 à 23:21
Finalement c'est la solution que j'ai utilisée. Merci.
0