Fonction qui associe un tableau a une variable
4 messages
• Page 1 sur 1
- michel.leonard
- WRInaute discret

- Messages: 184
- Inscription: 1 Juin 2010
Fonction qui associe un tableau a une variable
Bonjour, je vais vous exposer mon problème, il est déjà solutionné; mais de manière très malsaine (en terme de code).
C'est pourquoi je me disais que l'expérience de certains d'entre vous pourrais m'aider.
Problème :
j'ai une liste de nombres commençant à 1 et se terminant à k, k est toujours supérieur à 500 , cela signifie que ma liste comporte toujours plus de 500 nombres.
je cherche à créer une fonction qui à tout n ( n est un entier compris entre 1 et k ) associe un tableau comme suit
le problème est si n < 5 ou si n > (k-4)
car la je dois créer des conditions pour chacun d'entre ces nombres du type : if n = 1 , if n = 2 ... if n = k if n= (k-1)...
si n = 2 par exemple , ils renvoyer un tableau de type :
vous comprenez ? si n est trop petit, il dois aller chercher a la fin (vers k) , et si n est trop grand , il dois aller au début (vers 1)
donc, me direz vous c'est pas impossible de faire toutes les conditions , il y en à que 10... oui mais c'est ce que j'ai déja fait, cela fonctionne bien ma fonction connexe($n) restitue bien le bon tableau.
Mais si je veux un nombre connexe un peu plus "éloigné" de n je dois faire ceci :
plus je veux m'éloigner de n , plus la fonction s'appelle elle même... Mais c'est gènant... voyez vous mieux ?
merci de m'aider si vous le pouvez
cordialement, mike.
C'est pourquoi je me disais que l'expérience de certains d'entre vous pourrais m'aider.
Problème :
j'ai une liste de nombres commençant à 1 et se terminant à k, k est toujours supérieur à 500 , cela signifie que ma liste comporte toujours plus de 500 nombres.
je cherche à créer une fonction qui à tout n ( n est un entier compris entre 1 et k ) associe un tableau comme suit
- Code: Tout sélectionner
if (($n > 5)and(n < (k-4)))
array ([n-5],[n-4],[n-3],[n-2],[n-1],n,[n+1],[n+2],[n+3],[n+4],[n+5])
le problème est si n < 5 ou si n > (k-4)
car la je dois créer des conditions pour chacun d'entre ces nombres du type : if n = 1 , if n = 2 ... if n = k if n= (k-1)...
si n = 2 par exemple , ils renvoyer un tableau de type :
- Code: Tout sélectionner
array (k-3,k-2,k-1,k,1,2,3,4,5,6,7)
vous comprenez ? si n est trop petit, il dois aller chercher a la fin (vers k) , et si n est trop grand , il dois aller au début (vers 1)
donc, me direz vous c'est pas impossible de faire toutes les conditions , il y en à que 10... oui mais c'est ce que j'ai déja fait, cela fonctionne bien ma fonction connexe($n) restitue bien le bon tableau.
Mais si je veux un nombre connexe un peu plus "éloigné" de n je dois faire ceci :
- Code: Tout sélectionner
$nombre = connexe($n) ; $nombre = connexe( $nombre[10]) ; $nombre = connexe( $nombre[10]) etc...
plus je veux m'éloigner de n , plus la fonction s'appelle elle même... Mais c'est gènant... voyez vous mieux ?
merci de m'aider si vous le pouvez
cordialement, mike.
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Fonction qui associe un tableau a une variable
Je te le fais en pseudo-code...
Sinon tu peux le faire en utilisant range avec 3 cas de figure, genre:
Il y a probablement des offsets +-1 à ajouter à droite à gauche (parce que tu commences à 1 au lieu de 0), j'ai un peu la flemme de réfléchir où là
Jacques.
- Code: Tout sélectionner
fonction intervalle(milieu,ecart,max)
{
tableau a;
pour chaque i de milieu-ecart à milieu+ecart
{
push tableau,((i-1)%max)+1;
}
return tableau
}
Sinon tu peux le faire en utilisant range avec 3 cas de figure, genre:
- Code: Tout sélectionner
fonction intervalle(milieu,ecart,max)
{
si milieu < ecart alors return range(max+milieu-ecart,max),range(1,milieu+ecart)
sinon si milieu > max - ecart alors return range(milieu-ecart,max),range(1,(milieu+ecart)%max)
sinon return range(milieu-ecart,milieu+ecart);
}
Il y a probablement des offsets +-1 à ajouter à droite à gauche (parce que tu commences à 1 au lieu de 0), j'ai un peu la flemme de réfléchir où là
Jacques.
Dernière édition par jcaron le Jeu Juin 10, 2010 14:46, édité 1 fois.
-

gg00xiv - Nouveau WRInaute

- Messages: 43
- Inscription: 10 Juin 2010
Re: Fonction qui associe un tableau a une variable
En PHP :
Exemple avec cet appel : get_tableau(2, 15)
- Code: Tout sélectionner
function get_tableau($n, $k)
{
$tableau = array();
for($i=$n-5; $i<=$n+5; $i++)
$tableau[$i-$n+5] = ($i + $k) % ($k + 1);
}
Exemple avec cet appel : get_tableau(2, 15)
- Code: Tout sélectionner
$tableau[0] = (-3 + 15) % 16; // == 12 % 16 == 12
$tableau[1] = (-2 + 15) % 16; // == 13 % 16 == 13
$tableau[2] = (-1 + 15) % 16; // == 14 % 16 == 14
$tableau[3] = (0 + 15) % 16; // == 15 % 16 == 15
$tableau[4] = (1 + 15) % 16; // == 16 % 16 == 0
$tableau[5] = (2 + 15) % 16; // == 17 % 16 == 1 (<- n)
$tableau[6] = (3 + 15) % 16; // == 18 % 16 == 2
$tableau[7] = (4 + 15) % 16; // == 19 % 16 == 3
$tableau[8] = (5 + 15) % 16; // == 20 % 16 == 4
$tableau[9] = (6 + 15) % 16; // == 21 % 16 == 5
$tableau[10] = (7 + 15) % 16; // == 22 % 16 == 6
- michel.leonard
- WRInaute discret

- Messages: 184
- Inscription: 1 Juin 2010
Re: Fonction qui associe un tableau a une variable
gg00xiv a écrit:En PHP :
- Code: Tout sélectionner
function get_tableau($n, $k)
{
$tableau = array();
for($i=$n-5; $i<=$n+5; $i++)
$tableau[$i-$n+5] = ($i + $k) % ($k + 1);
}
Exemple avec cet appel : get_tableau(2, 15)
- Code: Tout sélectionner
$tableau[0] = (-3 + 15) % 16; // == 12 % 16 == 12
$tableau[1] = (-2 + 15) % 16; // == 13 % 16 == 13
$tableau[2] = (-1 + 15) % 16; // == 14 % 16 == 14
$tableau[3] = (0 + 15) % 16; // == 15 % 16 == 15
$tableau[4] = (1 + 15) % 16; // == 16 % 16 == 0
$tableau[5] = (2 + 15) % 16; // == 17 % 16 == 1 (<- n)
$tableau[6] = (3 + 15) % 16; // == 18 % 16 == 2
$tableau[7] = (4 + 15) % 16; // == 19 % 16 == 3
$tableau[8] = (5 + 15) % 16; // == 20 % 16 == 4
$tableau[9] = (6 + 15) % 16; // == 21 % 16 == 5
$tableau[10] = (7 + 15) % 16; // == 22 % 16 == 6
mais oui, les modulos... j'avais pas pensé, merci de me mettre sur la piste, tout va devenir plus simple là, je vais étudier ca, merci pour la piste et pour le coup de pouce !!
4 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- variable get du type tableau[]=val1&tableau[]=val2
- Tableau associative et variable (class adsense)
- Déclarer une variable tableau en PHP
- variable javascript dans un tableau en PHP
- Comment insèrer $variable dans un tableau alléatoire?
- Comment mettre une variable texte dans un tableau en php ?
- Tableau PHP : trier en fonction des valeurs
- Requête en fonction de la variable
- [résolu] PHP-Trier un tableau en fonction d'un critére perso
- [JS] executer la fonction d'une variable
Consultez la description détaillée des produits ou services de Google suivants : Google Flights
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
