Visual studio
mayahhh
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
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();
}
}
}
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:
- Visual studio
- Telecharger fl studio 20 pour pc gratuit complet - Télécharger - Édition & Montage
- Visual petanque - Télécharger - Sport
- Visual c++ 2019 - Guide
- Visual paradigm - Télécharger - Gestion de données
- Photofiltre studio - Télécharger - Retouche d'image
4 réponses
Bonjour
d'abord quelques conseils pour poster ici:
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.
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.
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(); } } }
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 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.
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.
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
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
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>
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>
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
Voir même, supprimer cette ligne et modifier la suivante
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
Tu peux corriger la seconde partie du tri avec --.
Que se passe-t-il quand tu exécutes en pas à pas?
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?