Visual studio

Fermé
mayahhh Messages postés 2 Date d'inscription lundi 26 août 2019 Statut Membre Dernière intervention 27 août 2019 - 26 août 2019 à 09:21
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 - 27 août 2019 à 13:17
Bonjour,
je veux afficher les nombres pairs dans un label et je n'y arrive pas alors que le code est bon.


private void elempairs_Click(object sender, EventArgs e)

{
label2.Text = " ";
int i;
for (i = 0; i < montab.Length; i++)
{
if (montab[i]%2 == 0)
{
label2.Text = label2.Text + " " + montab[i].ToString();
}

}
}
A voir également:

4 réponses

Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
26 août 2019 à 09:34
Bonjour

d'abord quelques conseils pour poster ici:
  • choisir un titre en rapport avec la question, "Visual Studio" suggère un problème avec l'IDE, or il s'agit d'un problème de code.
  • utiliser la coloration syntaxique, voir ici un petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code (si ça n'est pas suffisamment clair, merci de le dire, on l'améliorera)
  • Décrire précisément ce qui se passe, "ça ne marche pas" ou "je n'y arrive pas" n'aide pas un interlocuteur qui n'est n'est pas dans ta tête, et n'a pas accès à ton ordinateur.


Pour ton problème, à priori oui, le code semble bon.
As tu mis un point d'arrêt au début de la méthode et exécuté en pas à pas, tout en vérifiant le contenu des variables pour voir se qui se passe?
Si oui, décrit se qui se passe, si non, fais le et reviens décrire si cela ne t'a pas apporté la solution.
0
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100
Modifié le 26 août 2019 à 09:51
J'ai pas tester je suis sur telephone mais :

private void elempairs_Click(object sender, EventArgs e)

{
label2.Text = " ";
int i;
for (i = 0; i < montab.Length; i++)
{
//Je prend le chiffre et je le divise par 2
double testifpair = montab[i] / 2;
//Je l'arrondi a l'entier inférieur
int entierinferieur = Math.Floor(testifpair);
//si la division - l'entier inferieur == 0 alors chiffre pair

//Exemple :
//i = 6
// 6/2 =3
//entier inferieur de 3 = 3
//3-3 = 0 c'est donc un chiffre pair

//i = 5
//5/2 =2.5
//entier inferieur de 2.5 = 2
//2.5-2 = 0.5 -> chiffre impair
if ((testifpair - entierinferieur) == 0)
{
label2.Text = label2.Text + " " + montab[i].ToString();
}

}
}
 

0
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100
26 août 2019 à 09:48
Ah a priori ton code était bon, quelqu'un peux m'expliquer l'effet de cette ligne de code ?
if (montab[i]%2 == 0)

J'ai bien compris que cella fait la même chose que mes calcul enfin d'après whismeril, mais je ne comprends pas pourquoi...
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
Modifié le 26 août 2019 à 11:46
Bonjour

l'opérateur % (modulo) retourne le reste d'une division entière.

1234567890 est divisible par 2, donc le reste est 0.
13 / 2 donne 6 reste 1.

C'est de l'algorithmie "de base", quand on suit un cours "académique" ça s'apprend très rapidement.
Je suppose que tu es autodidacte et que tu as appris en bidouillant.
J'ai fait ça aussi, et comme toi je butais sur des trucs de bases.
Un jour, suivi un cours structuré (en VB4 à l'époque) et je me suis rendu compte qu'avoir sauté les bases a été une erreur:
  • le codais très mal,
  • je réinventais souvent la roue (comme tu l'as fait aujourd'hui)
  • j'avais compris un certain nombre de choses de travers.


Le meilleur conseil que je puisse te donner est de suivre un cours d'algorithmie
https://algo.developpez.com/cours/ et un cours de C# https://tahe.developpez.com/dotnet/csharp/
Ça va te prendre un peu de temps, mais il faut savoir perdre le temps d'en gagner.
0
SioGabx Messages postés 265 Date d'inscription mardi 21 août 2018 Statut Membre Dernière intervention 17 novembre 2022 100 > Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024
26 août 2019 à 12:51
Je connaissais pas, et effectivement je dois à mon avis j'ai du souvent réinventé la roue comme tu dis puisque je regarde comment faire seulement quand je n'y arrive pas... x)

J'ai jamais fait de C# mais en 1 ans j'ai fait pas mal de Vb.net, de php, et un peu de JS.

Je vais regarder tes liens, du coup merci :D
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
26 août 2019 à 13:06
De rien
0
mayahhh Messages postés 2 Date d'inscription lundi 26 août 2019 Statut Membre Dernière intervention 27 août 2019
Modifié le 27 août 2019 à 12:11
J'ai pu régler le problème, merci beaucoup.

Mais suite a cette modification je n'arrive plus a réorganiser mon tableau de telle que tous les nombres paires soient regroupes au début du tableau et soient suivis par les nombres impaires.


private void reorgtab_Click(object sender, EventArgs e)
{
int i;
int pair1, impair1;
pair1 = -1;
impair1 = 10;
for (i = 0; i < montab.Length; i++)
{
if (montab[i] % 2 == 0)
{
pair1 = pair1 + 1;
tableautri[pair1] = montab[i];
}
else
{
impair1 = impair1 - 1;
tableautri[impair1] = montab[i];
}

}
for (i = 0; i < montab.Length; i++)
{
label2.Text = label2.Text + " " + tableautri[i].ToString();

}

}
}
}</code>
0
Whismeril Messages postés 19027 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 24 avril 2024 931
Modifié le 27 août 2019 à 13:18
Bonjour
je voies que tu as essayé d'utiliser la coloration syntaxique (il y a la balise fermante), mais que cela n'a pas fonctionné (il manque la balise ouvrante).
Sache que tu peux prévisualiser ton message avec le bouton éponyme (le message apparait au dessus) pour constater si le rendu est correct.
Si tu as oublié de prévisualiser, tu peux aussi modifier un de tes messages quelques minutes après l'avoir posté en cliquant sur le crayon en haut à droit du message.

Pour ton problème en particulier

impair1 = 10; // si montab ne contient pas 10 éléments ça va merdouiller


pair1 = pair1 + 1; 
tu peux le remplacer par
pair1++; 


Voir même, supprimer cette ligne et modifier la suivante
tableautri[++pair1] = montab[i]; 

Tu noteras que cette fois j'ai mis le ++ avant la variable, cela veut dire que l'on fait l'incrémentation avant que la valeur soit prise pour l'index. si on écrit
tableautri[pair1++] = montab[i]; 
la valeur d'index est prise avant l'incrémentation

Tu peux corriger la seconde partie du tri avec --.

Que se passe-t-il quand tu exécutes en pas à pas?
0