Générateur de variables existante =x

Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010 - 3 avril 2010 à 20:25
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010 - 4 avril 2010 à 10:17
Bonjour, je suis entrain de coder une méthode de classe.

la voici

public void intiCarte(int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9,int a10,int a11,int a12,int a13,int a14,int a15,int a16,int a17,int a18,int a19,int a20,int a21,int a22,int a23,int a24,int a25,int a26,int a27,int a28,int a29,int a30,int a31,int a32)
            {
                int x;
                for (x = 0; x < 32; x++)
                {
                    carte[x] = a+(x+1); //<= Spotted ! c'est ici
                }

                
            }


alors, voila mon probleme.
si vous analysez le code, j'aimerais que, dans le for, ça insert dans "carte[x]" ce que contient la variable "a+(x+1)".

exemple:

quand x vaut 4:

                for (x = 0; x < 32; x++)
                {
                    carte[4] = a5; //car a+x+1 = a+4+1 = a5; a5 étant la variable d'entrée a5.
                }



donc, c'est pour éviter de taper 32 instructions, celles-ci:

                    carte[0] = a1;
                    carte[1] = a2;
                    carte[2] = a3;
                    carte[3] = a4;
                    carte[4] = a5;
                    carte[5] = a6;
                    carte[6] = a7;
etc...
               


Mais, évidemment, quand je lance le programme, il me met: la variable "a" n'existe pas.
ça sert bien évidemment à rien de la déclarer, puisque qu'il va me faire une concaténation => a + x + 1 // donc si a vaut 10; carte[4] vaudra 15.
ce qui n'est pas du tout le but recherché ^^

si c'est pas tres clair, n'hésitez pas à me poser des questions :s

12 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
3 avril 2010 à 22:02
Salut,

Il me semble qui faut passer par la reflection de DOTNET

ou les variable dynamique (en c#4)

Mais la méthode que tu utilises doit surement avoir un problème de conception
avant.

Il faut peut etre revoir ton problème
comment son affecter toutes tes variables ???
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 09:08
Merci d'avoir répondu ^^

Pour te répondre:

sur le OnLoad:
cartes carte1 = new cartes();
carte1.setcarte(63);
carte1.intiCarte(1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47,49,51,53,55,57,59,61,63);


voila pour l'affectation ^^
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
4 avril 2010 à 09:16
Voici la solution alors

var carte = new int[32];
 for (x = 0; x < 32; x++)
 {
     carte[x] = 2*x+1;
 }


Bon dev.
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 09:19
Bien tenté ^^

mais malheureusement (vu que c'est de l'objet), il y aura un carte2.initCarte ayant des valeurs différentes de la carte1 ^^

je ne cherche pas du "bidouillage", j'aimerais vraiment savoir si c'est possible de générer des "variables existantes" voila =x

merci en tout cas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
4 avril 2010 à 09:43
Il doit me manquer des elements pour repondre.

Car carte n'existe pas aussi?
Et en plus si tu fais deux appels ca me parait bizarre?
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 09:45
C'est de la Programmation Orientée Objet (POO), c'est peut-etre ça qu'il te manque :s

(mais je me suis peut-etre bien planté de mon coté aussi ^^ fort possible ^^)
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
4 avril 2010 à 09:49
C'est surement de ton coté.
En POO, les fonctions avec 32 arguments ca n'existe pas.
C'est une abération car le but de la POO c'est justement d'éviter cela.
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 09:51
non, le but de la POO ce serait d'éviter d'écrire 5 fois ma fonction de 32 parametres.

car c'est ce que je vais faire. me faut 5 cartes ^^

je me trompe?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
4 avril 2010 à 09:57
A la place de tes 32 parametres, il faut passer une classe.
Une collection et donc tu n'a plus les 32 parametres?

Qui te dis que dans un avenir, il faut pas un appel avec 16 parametres ou 64
et la tu es embete car il faut refaire des fonctions

avec une fonction avec une collection en parametres il faut rien faire de plus.

C'est pas compliqué ;-)
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 10:07
et ma collection, je fais comment pour la remplir?

ça correspondrait aux 32(x5) instructions pour remplir la collection.

non?

un exemple?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
4 avril 2010 à 10:15
Tu lis une chaine de caractère

Exemple

chaine = "1;3;5;7;............";

monarray = chaine.Split(';');

Et voila.
0
Sharpnel Messages postés 19 Date d'inscription lundi 18 janvier 2010 Statut Membre Dernière intervention 4 avril 2010
4 avril 2010 à 10:17
Ca à l'air pas mal (je vais tester)

Merci ^^

Mais si quelqu'un trouve la réponse à ma question je prends ! ^^
0
Rejoignez-nous