IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual Studio Discussion :

Bloqué sur visual studio 2013


Sujet :

Visual Studio

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut Bloqué sur visual studio 2013
    Bonjour à tout le monde

    Je dois créer un programme demandant à l'utilisateur de rentrer un nombre entre 2 et 5000.
    A l'appuie d'un bouton, il faut :
    -Convertir le nombre puis l'afficher en binaire et hexadécimal.
    -Calculer le nombre de diviseurs
    -Afficher "les N diviseurs : " (avec N le nombre de diviseurs)
    -Mettre les diviseurs dans une listbox
    -Afficher si c'est un nombre premier
    -Trouver si c'est un nombre premier
    -Si oui, le mettre dans un second listbox

    A l'appuie d'un second bonton "vider" il faut vider le second listbox.

    J'avoue être complètement perdu...
    Je ne demande pas la solution, mais de l'aide pour me débloquer

    Voilà le design :
    Nom : vb.JPG
Affichages : 255
Taille : 22,5 Ko

    Merci d'avance !

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut
    Voici mon début de code :

    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Public Class Form1
     
     
        Private Sub btnok_Click(sender As Object, e As EventArgs) Handles btnOk.Click 'réalisé au clic sur btnOk
            Dim nombre As Integer 'variable nombre
            nombre = txtnombre.Text 'nombre prend la valeur du textbox txtnombre
            If txtnombre.Text <> "" Then 'si le textbox n'est pas vide
                If nombre >= 2 And nombre <= 5000 Then 'et si le nombre est compris entre 2 et 5000
                    btnOk.Enabled = True 'le bouton btnOk est actif
                Else
                    btnOk.Enabled = False 'sinon il est grisé
                End If
            End If
     
     
            If IsNumeric(txtnombre.Text) Then
                txtbinaire.Text = Convert.ToString(CInt(txtnombre.Text), 2) 'convertion en décimale
                txthexadecimal.Text = UCase(Convert.ToString(CInt(txtnombre.Text), 16)) 'conversion en hexadécimale
            End If
        End Sub
        Private Sub txtInput_TextChanged(sender As Object, e As EventArgs) Handles txtnombre.TextChanged 'réalisé au changement de txtnombre
            If IsNumeric(txtnombre.Text) And txtnombre.Text >= 2 And txtnombre.Text <= 5000 Then 'si nombre un nombre et est compris entre 2 et 5000
                btnOk.Enabled = True 'alors bouton actif
            Else
                btnOk.Enabled = False 'sinon bouton grisé
            End If
        End Sub
    End Class


    En couleur :

    Nom : code.JPG
Affichages : 385
Taille : 113,7 Ko

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    par quoi es tu bloqué ?
    tu as l'air d'avoir compris le principe de lecture et d'écriture d'un textbox, le reste n'est que mathématique, pas informatique

    après ton code n'est pas super joli pour autant, ton code avec mon commentaire :

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub btnok_Click(sender As Object, e As EventArgs) Handles btnOk.Click 'réalisé au clic sur btnOk
      Dim nombre As Integer 
      nombre = txtnombre.Text ' là si le textbox ne contient pas un nombre alors que tu veux le convertir en entier ca va planter
                                         ' de plus ton vs devrait être paramétré sur option strict on (propriétés du projet) pour interdire de mettre des torchons dans les serviettes
                                        ' la vrais syntaxe est nombre = int32.parse(txtnombre.Text)
      If txtnombre.Text <> "" Then ' il aurait fallu faire ce test avant de convertir, et au passage vérifier si ca l'est comme tu le fais dans l'autre sub
                                             'int32.tryparse te permet de tester si c'est convertible et de convertir en une ligne de code (à mettre à la place du .parse donc)
        If nombre >= 2 And nombre <= 5000 Then 'et si le nombre est compris entre 2 et 5000
          btnOk.Enabled = True ' pourquoi resetter l'enabled du bouton ici, tu le fais déjà dans le textchanged, et ca n'a pas de sens ici
        Else
          btnOk.Enabled = False 'sinon il est grisé
        End If
      End If

    au passage tu noteras qu'il y a une balise pour la mise en forme du code sur le forum (le bouton #)
    par contre vu que tu n'as pas posté dans la rubrique vb.net et qu'il est calibré pour du c# par défaut il se trompe un peu, il faut forcer avec CODE=VB.NET au lieu de CODE (alors que c'est bon directement sur le forum vb.net)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut
    Merci pour ton aide!
    C’était justement le problème du crash en mettant des lettres. Mais si je rentre 100 et qu'après j'efface ça crash aussi...
    Je vais essayer ton astuce
    Ensuite pour calculer les diviseurs je suis partie sur ça :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    'Au clic sur btnOk
    Dim reste As Integer
    Dim decompte As Integer = nombre
    Do while decompte > 1
       reste = trouver reste de la division euclidienne de nombre / decompte
       If c'est un Integer
          lstbdiviseurs.Items.Add(reste)
       End if
       decompte -= 1
    End While

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut
    J'ai dupliqué le form pour pouvoir tester sans tout perdre
    J'ai mis Int32.Parse(txtNombre.Text pour le problème des lettres mais toujours le même problème.

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Private Sub txtNombre_TextChanged(sender As Object, e As EventArgs) Handles txtNombre.TextChanged
            Dim nombre As String 'variable nombre
            nombre = Int32.Parse(txtNombre.Text) 'nombre prend la valeur du textbox txtnombre
            If nombre <> "" Then 'si le textbox n'est pas vide
                If nombre >= 2 And nombre <= 5000 Then 'et si le nombre est compris entre 2 et 5000
                    If Not nombre > "A" And nombre < "z" Then
                        btnOk.Enabled = True 'le bouton btnOk est actif
                    Else
                        btnOk.Enabled = False
                    End If
                End If
            End If
        End Sub

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    onjour,



    Citation Envoyé par idiart33 Voir le message
    J'ai mis Int32.Parse(txtNombre.Text pour le problème des lettres mais toujours le même problème.
    Mais, c'est évident que tu ne peux pas "caster", "parser" ou convertir une lettre en nombre en VB sans faire ta propre moulinette qui va assigner les valeurs arithmétiques à tes lettres. Tu peux tout au plus récupérer le code de caractère de ta lettre.

    Ceci dit, si j'ai bien compris ton premier problème, to TextBox ne peut laisse passer que des nombres. Or ton événement Textchanged se déclenche des que tu ajoutes un caractère dans tom TextBox.
    Disons qu'au premier passage tu entres 3. Ton programme est aux oiseaux, tu as mis un nombre et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     nombre = Int32.Parse(txtNombre.Text)
    prend ton trois et continue.

    Mais supposons qu'au deuxième passage tu mettes un a. Mais là, ton TextBox contient 3a et ton instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     nombre = Int32.Parse(txtNombre.Text)
    ne peut pas convertir 3a en nombre entier et cela plante.

    Donc, tu dois t'assurer que rien d'autre qu'un chiffre ne se rende à ta ligne fatidique. Mais dès que ton textbox contient des valeurs valides, tu dois t'assurer de ne vérifier que le dernier caractère entré, puisque les autres sont, en principe validés. Donc, soit que tu continues avec l'événement changed et que tu extrais le dernier caractère entré pour le tester et continuer. Ou bien tu remplaces changed par keydown ou keypress et tu t'assures que le caractêre entré est bien un nombre et probablement aussi si c'est un "moins".

    Évidemment, être sûr que le professeur n'est pas trop brillant, tu pourrais essayer des textboxes numériques gratuits déjà tout faits.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    int32.tryparse te permet de tester si c'est convertible et de convertir en une ligne de code (à mettre à la place du .parse donc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if not int32.tryparse(...) then exit sub
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut
    J'ai mis ça :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        Private Sub txtNombre_TextChanged(sender As Object, e As EventArgs) Handles txtNombre.TextChanged
            Dim nombre As String 'variable nombre
            nombre = txtNombre.Text
            If Not Int32.TryParse(nombre) Then
                btnOk.Enabled = False
            End If
            'nombre = Int32.Parse(txtNombre.Text) 'nombre prend la valeur du textbox txtnombre
            If nombre <> "" Then 'si le textbox n'est pas vide
                If nombre >= 2 And nombre <= 5000 Then 'et si le nombre est compris entre 2 et 5000
                    btnOk.Enabled = True 'le bouton btnOk est actif
                Else
                    btnOk.Enabled = False
                End If
            End If
        End Sub

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 124
    Points : 47
    Points
    47
    Par défaut
    salut,
    j'ai presque finis le programme, mais je bloque sur la fin.
    Tout fonctionne, mais la fonction pour convertir en binaire à un défaut.
    Il écrit par exemple 010110 au lieu de 0001.0110
    Je pense avoir la solution pour le mettre sur 4 bits mais pour les point je vois pas trop.
    Si quelqu'un pourrai me donner juste la méthode, pas le code ce serai gentil.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/08/2015, 18h55
  2. XNA sur Visual Studio 2012/2013
    Par LittleWhite dans le forum Contribuez
    Réponses: 0
    Dernier message: 25/11/2014, 15h00
  3. [Débutant] Questions sur Visual Studio 2013 Express
    Par pgueguen dans le forum Visual Studio
    Réponses: 11
    Dernier message: 17/09/2014, 16h20
  4. [Débutant] Problème ouverture de form sur Visual Studio 2013
    Par jeremyvb11 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/11/2013, 08h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo