Parcourir un Char [] avec valeurs d'un Char[]
Fermé
Durst1805
-
1 avril 2008 à 19:49
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 3 avril 2008 à 09:09
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 3 avril 2008 à 09:09
A voir également:
- Parcourir un Char [] avec valeurs d'un Char[]
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? - Forum VB / VBA
- Expecting value: line 1 column 1 (char 0) ✓ - Forum MacOS
- Excel associer une valeur à un mot - Forum Excel
- Excel intervalle entre 2 valeurs ✓ - Forum Excel
- Formule excel si compris entre plusieurs valeurs ✓ - Forum Excel
3 réponses
Voila mon code que je viens de revoir à peu près pour vous facilitez la tâche. Il ne fonctionne pas tel quel, mais c'est pour vous montrer de quoi il en retourne. En fait c'est un mot de passe qui se défini selon le premier caractère entré par l'utilisateur :
En fait je voudrais que le x de tabSelect[x] représente la position que va prendre i dans le tableau. i défini lui même cette position, par une donnée entrée par l'utilisateur.
Par exemple pour le premier caractère j'entre la valeur 'A', je voudrais que i positionne x dans le tabSelect[] de façon à ce que pour le prochain test, du deuxième caractère, x se trouve dans le tabSelect à la position 'A' que j'ai entré, c'est à dire tabSelect[10].
Tout ça pour pouvoir ensuite après chaque étape, donnée une nouvelle valeur pour qu'il soit obligé à l'utilisateur d'entré un caractère prédéfini. Dans mon cas, pour être valide, mon deuxième caractère devra être 'C' car je respecte tabSelect[x] = tabSelect[x + 2]; situé juste après le Test, qui est censé incrémenté la valeur entrée en premier de 2 pour définir la nouvelle valeur du deuxième caractère qu'il faut entrer pour passer à l'étape trois.
En fait ce programme à pour but de définir des mot de passe aléatoires mais qui suivent toujours la même logique :
- L'utilisateur choisi un premier caractère compris dans tabSelect[]
- Il choisi ensuite un deuxième caractère compris dans tabSelect[], mais celui-ci doit correspondre à la valeur tabSelect[x] du premier caractère, incrémentée de 2 vers la droite.
- Il choisi ensuite un troisième caractère compris dans tabSelect[], mais celui-ci doit correspondre à la valeur tabSelect[x] du premier caractère, décrémentée de 6 vers la gauche
- .....
Merci beaucoup à tous ceux qui pourront m'aider (et qui me comprendront surtout), ce projet me tiens très à coeur.
class Program { static void Main(string[] args) { char[] tabSelect = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' }; int ctn = 0; int x = tabSelect.Length; Console.WriteLine("Entrez le premier caractère de votre mot de passe:"); i = Console.ReadLine(); Test(i, tabSelect[x], ctn); tabSelect[x] = tabSelect[x + 2]; if (ctn == 1) Console.WriteLine("Entrez le deuxième caractère de votre mot de passe:"); else { Console.WriteLine("Le mot de passe est incorrecte"); break; } i = Console.ReadLine(); Test(i, tabSelect[x], ctn); tabSelect[x] = tabSelect[x - 6]; if (ctn == 2) Console.WriteLine("Entrez le troisième caractère de votre mot de passe:"); else { Console.WriteLine("Le mot de passe est incorrecte"); break; } } public static void Test(string i, int x, int ctn) { i = (int)i; if (i == x) ctn++; else { Console.WriteLine("Le mot de passe est incorrecte"); break; } } }
En fait je voudrais que le x de tabSelect[x] représente la position que va prendre i dans le tableau. i défini lui même cette position, par une donnée entrée par l'utilisateur.
Par exemple pour le premier caractère j'entre la valeur 'A', je voudrais que i positionne x dans le tabSelect[] de façon à ce que pour le prochain test, du deuxième caractère, x se trouve dans le tabSelect à la position 'A' que j'ai entré, c'est à dire tabSelect[10].
Tout ça pour pouvoir ensuite après chaque étape, donnée une nouvelle valeur pour qu'il soit obligé à l'utilisateur d'entré un caractère prédéfini. Dans mon cas, pour être valide, mon deuxième caractère devra être 'C' car je respecte tabSelect[x] = tabSelect[x + 2]; situé juste après le Test, qui est censé incrémenté la valeur entrée en premier de 2 pour définir la nouvelle valeur du deuxième caractère qu'il faut entrer pour passer à l'étape trois.
En fait ce programme à pour but de définir des mot de passe aléatoires mais qui suivent toujours la même logique :
- L'utilisateur choisi un premier caractère compris dans tabSelect[]
- Il choisi ensuite un deuxième caractère compris dans tabSelect[], mais celui-ci doit correspondre à la valeur tabSelect[x] du premier caractère, incrémentée de 2 vers la droite.
- Il choisi ensuite un troisième caractère compris dans tabSelect[], mais celui-ci doit correspondre à la valeur tabSelect[x] du premier caractère, décrémentée de 6 vers la gauche
- .....
Merci beaucoup à tous ceux qui pourront m'aider (et qui me comprendront surtout), ce projet me tiens très à coeur.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
2 avril 2008 à 10:15
2 avril 2008 à 10:15
Salut, j'ai bien comrpis ce que tu voulais faire (du moins je pense) Je repar plutot du premier code (je comprend pas trop le deuxième) :
tabValue[0] = rep1;
tabValue[1] = tabValue[0] + 2;
tabValue[2] = tabValue[1] - 18;
tabValue[3] = tabValue[2];
tabValue[4] = tabValue[3] + 22;
et je ferai une fonction qui retourne l'index de tab select :
int index2(Char a)
{for (int i=0;i<tabSelect.Length;i++)
{if(tabSelect[i]==a) return i;}}
Et ensuite :
tabValue[0] = rep1;
tabValue[1] = tabSelect[index2(tabValue[0]) + 2];
etc.
tabValue[0] = rep1;
tabValue[1] = tabValue[0] + 2;
tabValue[2] = tabValue[1] - 18;
tabValue[3] = tabValue[2];
tabValue[4] = tabValue[3] + 22;
et je ferai une fonction qui retourne l'index de tab select :
int index2(Char a)
{for (int i=0;i<tabSelect.Length;i++)
{if(tabSelect[i]==a) return i;}}
Et ensuite :
tabValue[0] = rep1;
tabValue[1] = tabSelect[index2(tabValue[0]) + 2];
etc.
Super grâce à toi j'ai pu bien avancer, mais il reste néanmoins une erreur qui m'empêche de finaliser. Voici le code que j'ai produit grâce à ton aide :
Voilà le problème se situe en gras. Le compilateur me donne l'erreur suivante :
Error 3 : No overload for method 'Index' takes '1' arguments
Il me semble que ca parle de surcharge, mais je ne comprend pas très bien l'erreur. Aide moi s'il te plait.
class Program { static string[] tabSelect = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; public static int Index(string rep, int ctn) { for (int x = 0; x < tabSelect.Length; x++) { if (tabSelect[x] == rep) { ctn++; return x; } } return ctn; } static void Main(string[] args) { string[] tabValue = new string[5]; int ctn = 0; Console.WriteLine("Entrez le premier caractère de votre mot de passe:"); tabValue[0] = Console.ReadLine(); Index(tabValue[0], ctn); tabValue[1] = tabSelect[Index(tabValue[0] + 2)]; if (ctn == 1) Index(tabValue[1], ctn); else { Console.WriteLine("Le mot de passe est incorrecte"); } tabValue[2] = tabSelect[Index(tabValue[1]-3)]; if (ctn == 2) Index(tabValue[2], ctn); else { Console.WriteLine("Le mot de passe est incorrecte"); } tabValue[3] = tabSelect[Index(tabValue[2]+6)]; if (ctn == 3) Index(tabValue[3], ctn); else { Console.WriteLine("Le mot de passe est incorrecte"); } tabValue[4] = tabSelect[Index(tabValue[3] +4)]; if (ctn == 4) Index(tabValue[4], ctn); else { Console.WriteLine("Le mot de passe est incorrecte"); } } }
Voilà le problème se situe en gras. Le compilateur me donne l'erreur suivante :
Error 3 : No overload for method 'Index' takes '1' arguments
Il me semble que ca parle de surcharge, mais je ne comprend pas très bien l'erreur. Aide moi s'il te plait.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
3 avril 2008 à 09:09
3 avril 2008 à 09:09
hum, évidemment.
tu déclare Index ainsi :
int Index(string rep, int ctn)
Or, lors de l'appel, tu ne met qu'un seul argument :
Index(tabValue[0] + 2)
de plus, je trouve ça bizzard de mettre "+2" à l'intérieur d'Index par exemple, si tabValue[0] vaut 'A', Index te renverra l'Index de 'C' (ce qui en soi n'est pas trop grave car tu utilise l'ordre alphabétique, mais qui peut être plus enbétant si tu passe de chiffre à lettre, car '9'+1!='A')
tu déclare Index ainsi :
int Index(string rep, int ctn)
Or, lors de l'appel, tu ne met qu'un seul argument :
Index(tabValue[0] + 2)
de plus, je trouve ça bizzard de mettre "+2" à l'intérieur d'Index par exemple, si tabValue[0] vaut 'A', Index te renverra l'Index de 'C' (ce qui en soi n'est pas trop grave car tu utilise l'ordre alphabétique, mais qui peut être plus enbétant si tu passe de chiffre à lettre, car '9'+1!='A')