Auteur Auteur

EXERCICES RESOLUS EN VISUAL BASIC

EXERCICES RESOLUS EN VISUAL BASIC

EXERCICE 7

EXERCICE 7

Ecrire un programme en Visual basic mode console qui détermine les n nombres premiers. Prévoir que n varie dans l’intervalle [10, 60].
Nota : un nombre premier est un nombre qui n’a que deux diviseurs : l’unité et lui-même.

Analyse et solution

Analyse et solution

n représente l’effectif des nombres premiers, par exemple si l’utilisateur saisit n=10, notre programme doit afficher les 10 premiers nombres premiers. Dans l’énoncé, il est dit que n doit appartenir dans [10, 60], il suffit d’utiliser une boucle demandant la valeur de n jusqu’à ce que n soit compris dans [10, 60].

Un nombre premier est un nombre qui n’a pas d’autre diviseurs hormis 1 et lui-même, dans ce cas pour chaque nombre on va parcourir de 2 à ce nombre-1 ; si on trouve un diviseur alors ce nombre n’est pas premier, sinon il est premier et on l’affiche en prenant soin de compter les nombres affichés pour que l’effectif ne dépasse pas n.


Module Module1

    Sub Main()
        Dim n, i, nombre, compteur As Integer
        Dim test As Boolean
        nombre = 2
        compteur = 0
        Console.WriteLine("Entrez le nombre de valeurs")
1:      n = CInt(Console.ReadLine())
        If n < 10 Or n > 60 Then
            Console.WriteLine("Le nombre de valeurs doit se trouver entre 10 et 60, recommencez")
            GoTo 1
        End If
        'recherche et affichage des nombres premiers
        Console.WriteLine("Voici les " & n & " premiers nombres premiers")
        Do
            test = True
            For i = 2 To n - 1
                If nombre Mod i = 0 Then
                    test = False
                End If
            Next
            If test = True Then
                Console.WriteLine(nombre.ToString)
                compteur += 1
            End If
            nombre += 1
        Loop Until compteur = n
        Console.ReadLine()
    End Sub

End Module


EXERCICE 8

EXERCICE 8

Ecrire un programme Visual basic mode console de sondage d’opinion sur les compétences en programmation. Le programme affichera la phrase Maitrisez-vous : 1. Le QBASIC ; 2. Le VBASIC ; 3. Les deux langages ; 4. Aucun de deux », après le choix de l’utilisateur (c.-à-d. uniquement l’un de numéro défini comme étiquette), le programme va incrémenter le compteur correspondant au choix effectué. Cette opération sera répétée de manière indéterminée aussi longtemps qu’il y aura une autre personne à interroger. Et le programme affichera au final le pourcentage de chacune d’options. (Recommandation : Utilisez la boucle DO UNTIL)

Analyse et solution

Analyse et solution

On va effectuer le sondage tant qu’il y a quelqu’un à interroger, sur ce il suffit de répéter la question « il y a-t-il quelqu’un à interroger ? » jusqu’à ce que la réponse soit NON. On va utiliser 4 compteurs (parce qu’il y a 4 réponses possibles) qui vont stocker le nombre de fois que le choix correspondant a été effectué…


Module Module1

    Sub Main()
        Dim reponse As String
        Dim score_vb, score_qb, score_deux, score_aucun, total, choix As Integer
        Dim pourc_vb, pourc_qb, pourc_deux, pourc_aucun As Single
        score_vb = 0
        score_qb = 0
        score_aucun = 0
        score_deux = 0
        Do
            Console.WriteLine("Il y a t il quelqu'un à interroger?")
            reponse = Console.ReadLine()
            If UCase(reponse) = "OUI" Then
                Console.WriteLine("Maitrisez-vous:")
                Console.WriteLine("1. Le visual basic")
                Console.WriteLine("2. Le Q Basic")
                Console.WriteLine("3.Les deux")
                Console.WriteLine("Aucun")
                Console.WriteLine("Faites un choix")
5:              choix = CInt(Console.ReadLine())
                Select Case (choix)
                    Case 1
                        score_vb += 1
                    Case 2
                        score_qb += 1
                    Case 3
                        score_deux += 1
                    Case 4
                        score_aucun += 1
                    Case Else
                        Console.WriteLine("choix incorrect, recommencez")
                        GoTo 5
                End Select

            End If
        Loop Until UCase(reponse) = "NON"
        total = score_aucun + score_deux + score_qb + score_vb
        pourc_aucun = score_aucun * 100 / total
        pourc_deux = score_deux * 100 / total
        pourc_qb = score_qb * 100 / total
        pourc_vb = score_vb * 100 / total
        Console.WriteLine("Sur " & total & " personnes interrogées " & pourc_vb & " % maitrisent le Visual Basic ")
        Console.WriteLine("Sur " & total & " personnes interrogées " & pourc_qb & " % maitrisent le QBasic")
        Console.WriteLine("sur " & total & " personnes interrogées " & pourc_deux & " % maitrisent les deux langages")
        Console.WriteLine("sur " & total & " personnes interrogées " & pourc_aucun & " % ne maitrisent aucun langage")
        Console.ReadLine()

    End Sub
End Module

EXERCICE 9

EXERCICE 9

Concevoir un programme Visual basic en mode console de gestion de mot de passe qui est constitué de 3 parties (Nom, Prénom et date de naissance) qui sont successivement lues.

a. L’utilisateur saisit premièrement le nom. Si celui-ci correspond à votre nom, le programme passe à l’étape (b). En cas de répétition de 3 lectures incorrectes, le programme affiche le message « Le système est verrouillé » puis s’arrête ;

b. Il saisit le prénom. Si celui-ci correspond à votre prénom, le programme passe à l’étape (c). En cas de répétition de 2 lectures incorrectes, le programme affiche également le message « Le système est verrouillé » puis s’arrête ;

c. Il saisit la date de naissance. Si celle-ci correspond à votre date de naissance, le programme affiche le message « Accès autorisé », sinon le message « Le système est verrouillé ».

Analyse et solution

Analyse et solution

Dans ce cas, l’utilisateur doit introduire trois mots de passe, le premier doit correspondre à mon nom(DIUMI), le deuxième à mon prénom (AIME) et le troisième à ma date de naissance(24/09) pour que l’accès lui soit autorisé, donc des structures conditions suffisent pour vérifier…mais l’utilisateur ne peut pas saisir indéfiniment le mot de passe quand ce dernier est incorrect, il a seulement droit à 3 essais pour la première étape, 2 pour la deuxième et un seul pour la dernière, sur ce on doit ajouter un compteur qui comptera le nombre d’essai


Module Module1

    Sub Main()
        Dim mot1, mot2, mot3 As String
        Dim i, j As Integer
        'etape a
        i = 1
5:      Console.WriteLine("Entrez le premier mot de passe")
        mot1 = Console.ReadLine()
        If mot1 <> "DIUMI" Then
            i += 1
            If i < 4 Then
                Console.WriteLine("Mot de passe incorrect, recommencez")
                GoTo 5
            Else
                GoTo 20
            End If
        Else
            GoTo 10

        End If
        'étape b
        j = 1
10:     Console.WriteLine("Entrez le deuxième mot de passe")
        mot2 = Console.ReadLine()
        If mot2 <> "AIME" Then
            j += 1
            If j < 2 Then
                Console.WriteLine("mot de passe incorrect, recommencez")
                GoTo 10
            Else
                GoTo 20
            End If
        Else
            GoTo 15
        End If
        'étape c
15:     Console.WriteLine("Entrez le troisième mot de passe")
        mot3 = Console.ReadLine()
        If mot3 = "24/09" Then
            Console.WriteLine("Accès autorisé")
        Else
20:         Console.WriteLine("Système verrouillé")
        End If
        Console.ReadLine()
    End Sub

End Module


EXERCICE 10

EXERCICE 10

Faites un programme VB en mode console qui lit l’âge de chacun de 500 habitants d’une rue, et détermine le nombre de personnes pour chaque catégorie, et la catégorie qui a le nombre de personnes le plus élevé. Les catégories sont définies suivant l’âge de manière ci-après :

  • Moins d’un an (âge <1) : bébé
  • De 1 à 11 (âge>=1 et âge<12) : Enfant
  • De 12 à 17 (âge>=12 et âge<18) : Adolescent
  • Plus de 17 (âge>=18) : Adulte

Indication : l’âge inférieur à 1 est considéré comme 0 an pour l’utilisateur.

Analyse et solution

Analyse et solution

Notre programme doit lire l’âge de 500 habitants, dans ce cas on peut utiliser et on utilisera for car le nombre de répétition est connu d’avance…Chaque fois que l’âge est lu, on va le comparer pour voir s’il appartient à quelle catégorie enfin d’incrémenter le compteur de la catégorie correspondant.


Module Module1

    Sub Main()
        Dim bebe, ado, adulte, enfant As Integer
        Dim i, age As Integer
        bebe = 0
        ado = 0
        adulte = 0
        enfant = 0
        For i = 1 To 500
5:          Console.WriteLine("Entrez l'age de l'habitant n° " & i)
            age = CInt(Console.ReadLine())
            If age < 1 Then
                bebe += 1
            ElseIf age >= 1 And age < 12 Then
                enfant += 1
            ElseIf age >= 12 And age < 18 Then
                ado += 1
            ElseIf age >= 18 Then
                adulte += 1
            Else
                Console.WriteLine("age incorrect, recommencez")
                GoTo 5
            End If
        Next
        Console.WriteLine("il y a au total " & bebe & " personnes pour la catégorie bébé")
        Console.WriteLine("il y a au total " & enfant & " personnes pour la catégorie enfant")
        Console.WriteLine("il y a au total " & ado & " personnes pour la catégorie adolescent")
        Console.WriteLine("il y a au total " & adulte & " personnes pour la catégorie adulet")
        'détermination de la plus grande catégorie
        If bebe > enfant And bebe > ado And bebe > adulte Then
            Console.WriteLine("C'est la catégorie bébé qui possède plus de personnes")
        ElseIf enfant > bebe And enfant > ado And enfant > adulte Then
            Console.WriteLine("C'est la catégorie enfant qui possède plus de personnes")
        ElseIf ado > bebe And enfant > enfant And ado > adulte Then
            Console.WriteLine("C'est la catégorie ado qui possède plus de personnes")
        ElseIf adulte > bebe And adulte > ado And adulte > enfant Then
            Console.WriteLine("C'est la catégorie adulte qui possède plus de personnes")
        Else
            Console.WriteLine("Il n'y a pas une catégorie qui a plus de personnes que toutes les autres")
        End If
        Console.ReadLine()
    End Sub

End Module


EXERCICE 11

EXERCICE 11

Faites un programme VB en mode console qui lit les cotes des N étudiants d’une promotion dans le cours de programmation, ensuite détermine le pourcentage de réussites et la mention associée à ce pourcentage. La mention est déterminée selon les règles suivantes :

Pourcentage Mention
<20 Cours non assimilé
>=20 Cours assez bien assimilé
>=40 Cours bien assimilé
>=70 Cours très bien assimilé

Analyse et solution

Analyse et solution

Pour ce problème, l’utilisateur doit saisir le nombre d’étudiants, puis les cotes de ces étudiants, pour la saisie des côtes, on va utiliser la boucle for…

On peut résoudre ce problème avec ou sans tableau, avec le tableau on va le remplir avec les cotes des étudiants, puis après on va le parcourir pour compter le nombre de réussites enfin de calculer le pourcentage et déterminer la mention associée.

Et sans tableau, après la saisie de chaque côte on vérifie s’il y a réussite pour incrémenter le compteur des réussites.


Module Module1

    Sub Main()
        Dim cote, n, i, reussite As Integer
        Dim pourcentage As Single
        reussite = 0
        Console.WriteLine("Entrez le nombre d'étudiants")
        n = CInt(Console.ReadLine())
        For i = 1 To n
            Console.WriteLine("Entre la cote de l'étudiant n° " & i)
            cote = CInt(Console.ReadLine())
            If cote >= 10 Then
                reussite += 1
            End If
        Next
        pourcentage = reussite * 100 / n
        'Détermination de la mention
        If pourcentage < 20 Then
            Console.WriteLine("Il y a eu " & pourcentage & "  % de reussites, donc le cours est non assimilé")
        ElseIf pourcentage >= 20 And pourcentage < 40 Then
            Console.WriteLine("Il y a eu " & pourcentage & "  % de reussites, donc le cours est assez bien assimilé")
        ElseIf pourcentage >= 40 And pourcentage < 70 Then
            Console.WriteLine("Il y a eu " & pourcentage & "  % de reussites, donc le cours est bien assimilé")
        Else
            Console.WriteLine("Il y a eu " & pourcentage & "  % de reussites, donc le cours est très bien assimilé")
        End If
        Console.ReadLine()
    End Sub

End Module


EXERCICE 12

EXERCICE 12

Ecrire un programme VB en mode console qui lit les éléments d’un tableau linéaire T ayant n éléments, ensuite transfert les éléments supérieurs ou égaux à 50 dans un tableau TREUSSITE, et les éléments inférieurs à 50 dans un tableau TECHEC.

Analyse et solution

Analyse et solution

Pour ce problème, on aura besoin de trois tableaux, la taille du premier sera déterminée par l’utilisateur tandis que pour les deux autres leurs tailles dépendront des valeurs saisies.


Module Module1

    Sub Main()
        Dim n, i As Integer
        Console.WriteLine("Entrez la taille du tableau")
        n = CInt(Console.ReadLine())
        'déclaration des tableaux
        Dim T(n - 1) As Integer
        Dim TREUSSITE(n - 1) As Integer
        Dim TECHEC(n - 1) As Integer
        'remplissage du tableau
        Console.WriteLine("Remplissage du tableau")
        For i = 0 To n - 1
            Console.WriteLine("Entrez l'élément n° " & i)
            T(i) = CInt(Console.ReadLine())
        Next
        'Transfert des éléments
        Dim j, k As Integer
        j = 0
        k = 0
        For i = 1 To n - 1
            If T(i) >= 50 Then
                TREUSSITE(j) = T(i)
                j += 1
            Else
                TECHEC(k) = T(i)
                k += 1
            End If
        Next
        'affichage de deux tableaux
        If j > 0 Then
            Console.WriteLine("Voici le contenu du tableau TREUSSITE")
            For i = 0 To j - 1
                Console.WriteLine(TREUSSITE(i).ToString)
            Next
        Else
            Console.WriteLine("Le tableau TREUSSITE n'a aucun élément")
        End If
        If k > 0 Then
            Console.WriteLine("Voici le contenu du tableau TECHEC")
            For i = 0 To k - 1
                Console.WriteLine(TECHEC(i).ToString)
            Next
        Else
            Console.WriteLine("Le tableau TECHEC n'a aucun élément")
        End If
        Console.ReadLine()
    End Sub

End Module


EXERCICE 13

EXERCICE 13

Ecrire un programme en VB en mode console qui permet de compléter les informations sur les étudiants d’une université dans un tableau « liste » de type structure, de taille 50, dont la structure est : nom, prénom, sexe et âge ; ensuite affiche ces informations suivant l’ordre croissant des noms. En cas d’égalité des noms (noms identiques), un tri croissant s’effectue sur les prénoms.

Solution

Solution


Module Module1
    Structure etudiant
        Dim nom As String
        Dim prenom As String
        Dim sexe As String
        Dim age As Integer
    End Structure
    Sub Main()
        Dim liste(49) As etudiant
        Dim i, j As Integer
        Dim intermediaire As etudiant
        'lecture des informations des étudiants
        For i = 0 To 49
            Console.WriteLine("Les informations de l'étudiant n° " & i)
            Console.WriteLine("Son nom :")
            liste(i).nom = Console.ReadLine()
            Console.WriteLine("Son prénom")
            liste(i).prenom = Console.ReadLine()
            Console.WriteLine("Son sexe")
            liste(i).sexe = Console.ReadLine()
            Console.WriteLine("Son age")
            liste(i).age = CInt(Console.ReadLine())
        Next
        'tri des informations d'après les noms
        For i = 49 To 2 Step -1
            For j = 1 To i - 1
                If liste(j).nom > liste(j + 1).nom Then
                    intermediaire = liste(j)
                    liste(j) = liste(j + 1)
                    liste(j + 1) = intermediaire
                ElseIf liste(j).nom = liste(j + 1).nom Then
                    If liste(j).prenom > liste(j + 1).prenom Then
                        intermediaire = liste(j)
                        liste(j) = liste(j + 1)
                        liste(j + 1) = intermediaire
                    End If

                End If
            Next
        Next
        'Affichage des informations
        Console.WriteLine("Les informations des étudiants")
        Console.WriteLine("NOMS     PRENOMS    SEXE     AGE")
        For i = 0 To 49
            Console.WriteLine(liste(i).nom & "  " & liste(i).prenom & " " & liste(i).sexe & " " & liste(i).age)
        Next
        Console.ReadLine()
    End Sub

End Module


pdf Retrouvez ce cours en version pdf
Télécharger
EXERCICES PRECEDENTS
EXERCICES SUIVANTS