Auteur Auteur

EXERCICES RESOLUS EN VISUAL BASIC

EXERCICES RESOLUS EN VISUAL BASIC

EXERCICE 28

EXERCICE 28

Ecrire un programme Visual Basic qui permet de lire les données sur l’âge (celui-ci ne pouvant pas être en dessous de 16, ni au-delà de 65) et le sexe (les valeurs possibles étant M ou F) de 100 personnes de la communauté estudiantine constituant un échantillon statistique, ensuite il détermine l’âge le plus élevé, l’âge le moins élevé, l’âge moyen, le pourcentage des hommes et celui des femmes.

Solution

Solution


Module Module1
    Sub Main()
        Dim age(99) As Integer
        Dim sexe(99) As String
        Dim i As Integer
        Console.WriteLine("Lecture de données")
        For i = 0 To 99
10:         Console.WriteLine("entrez l'age de l'etudiant n°  " & i + 1)
5:          age(i) = CInt(Console.ReadLine())
            If age(i) < 16 Or age(i) > 65 Then
                Console.WriteLine("l 'age doit etre compris entre 16 et 65, recommencez")
                GoTo 5
            Else
                Console.WriteLine("entrez le sexe de l'etudiant n°" & i + 1)
15:             sexe(i) = Console.ReadLine()
                If UCase(sexe(i)) <> "M" And UCase(sexe(i))<> "F" Then
                    Console.WriteLine("les deux valeurs permises pour le sexe sont M ou F, recommencez")
                    GoTo 15
                End If
            End If
        Next
        'recherche de l'age le plus élevé 
        Dim max As Integer
        max = age(0)
        For j As Integer = 1 To 99
            If age(j) > max Then
                max = age(j)
            End If
        Next
        'recherche de l'age le plus bas 
        Dim min As Integer
        min = age(0)
        For j As Integer = 1 To 99
            If age(j) < min Then
                min = age(j)
            End If
        Next
        'calcul de l'age moyen 
        Dim somme As Integer
        Dim moy As Single
        somme = 0
        For j As Integer = 0 To 99
            somme += age(j)
        Next
        moy = somme / 9
        'calcul du pourcentage des hommes et femmes 
        Dim Som_H, som_F As Integer
        Dim pH, pF As Single
        som_F = 0
        Som_H = 0
        For J As Integer = 0 To 99
            If UCase(sexe(J)) = "M" Then
                Som_H += 1
            Else
                som_F += 1
            End If
        Next
        pH = (Som_H * 100) / 100
        pF = (som_F * 100) / 100
        Console.WriteLine("L'age le plus élevé est : " & max)
        Console.WriteLine("L'age le moins élevé est:  " & min)
        Console.WriteLine("L'age moyen est: " & moy)
        Console.WriteLine("il y a  " & pF & "% des femmes")
        Console.WriteLine("il y a  " & pH & "% des hommes")
        Console.ReadLine()
    End Sub
End Module

EXERCICE 29

EXERCICE 29

A la naissance de Junior, sa maman lui ouvre avec un montant de départ de 100 dollars, un compte bancaire dont le taux d’intérêt annuel est de 4%. Ensuite, à chaque anniversaire, la maman de Junior verse sur ce compte 100 dollars, auxquels elle ajoute un montant correspondant au double de l’âge de Junior. Par exemple lorsqu’il aura 4 ans, elle lui versera 108 dollars. Ecrire un programme Visual Basic en mode console qui permette de déterminer la somme qu’aura Junior lors de son nième anniversaire (avec n ≥ 2).

Analyse et Solution

Analyse et Solution

Le montant initial est de 100 dollars.
Après une année, il aura 100+100*0.04+102=206
Pour la deuxième année : 206+206*0.04+104. On constate que le montant courant de la première année devient le montant initial de la deuxième année. On peut généraliser : pour une année donnée, on aura :
Montant initial (montant courant de l’année passée)
+Montant initial*0.04 (Intérêt annuel)
+ 100+2 * le nombre d’année.


Module Module1
    Sub Main()
        Dim n, i As Integer
        Dim Montant_initial, Montant_courant As Single
        Console.WriteLine("Entrez le nombre d'années")
5:      n = CInt(Console.ReadLine())
        If n < 2 Then
            Console.WriteLine("Le nombre d'années doit etre superieur ou égal à 2, recommencez")
            GoTo 5
        Else
            Montant_initial = 100
            For i = 1 To n
                Montant_courant = Montant_initial * 1.04 + 100 + 2 * i
                Montant_initial = Montant_courant
            Next
        End If
        Console.WriteLine("Au " & n & " e anniversaire, il aura: " &Montant_courant)
        Console.ReadLine()
    End Sub
End Module

EXERCICE 30

EXERCICE 30

Ecrire un programme Basic qui lit une phrase, ensuite le parcourt pour en déterminer les mots qui sont repris plusieurs fois dans celle-ci et nombre de répétitions pour chacun d’eux. (Exemple : dans la phrase « David est vaillant. Un vaillant, est un homme prudent », les mots est, vaillant et un sont repris chacun deux fois).

Analyse et solution

Analyse et solution

Après la saisie de la phrase, pour connaitre les mots présents dans la phrase, on peut utiliser la fonction Split qui convertit une chaine de caractères en un tableau ayant pour éléments les mots formant la chaine. Etant donné que le séparateur de mots utilisé par la fonction est l’espace, il faut bien prendre soin de vérifier s’il y a les principaux signes de ponctuation à la fin des mots pour ne pas prendre ça en compte.


Module Module1
    Sub Main()
        Dim phrase As String
        Dim n, i, j, k As Integer
        Dim A(5) As Integer
        Dim m(500) As String
        Dim test As Boolean
        Console.WriteLine("Entrez la phrase")
        phrase = Console.ReadLine
        'Determination du nombre de mots de la phrase 
        Dim Mots() As String = Split(phrase)
        n = Mots.Length - 1
        ' on vérifie si les principaux signes de ponctuation se trouvent à la fin de certains mots 
        For i = 0 To n
            If Mid(Mots(i), Mots(i).Length, 1) = "," Or Mid(Mots(i),Mots(i).Length, 1) = ";" Or Mid(Mots(i), Mots(i).Length, 1) = ":" Or Mid(Mots(i), Mots(i).Length, 1) = "!" Or Mid(Mots(i), Mots(i).Length,1) = "?" Or Mid(Mots(i), Mots(i).Length, 1) = "." Then
                Mots(i) = Mid(Mots(i), 1, Mots(i).Length - 1)
            End If
        Next
        'on retient les mots distincts qui composent la phrase 
        m(0) = Mots(0)
        k = 1
        For i = 1 To n
            test = False
            For j = 0 To i - 1
                If UCase(Mots(i)) = UCase(Mots(j)) Then
                    test = True
                End If
            Next
            If test = False Then
                m(k) = Mots(i)
                k = k + 1
            End If
        Next
        ReDim A(k - 1)
        'initialisation des nombres d'occurrences à zéro 
        For i = 0 To k - 1
            A(i) = 0
        Next
        'on compte le nombre d'occurrence de chaque mot 
        ReDim Preserve m(k - 1)

        For i = 0 To k - 1
            For j = 0 To n
                If UCase(m(i)) = UCase(Mots(j)) Then
                    A(i) += 1
                End If
            Next
        Next
        'on affiche que les mots qui sont repris plusieurs fois 
        Console.WriteLine("Voici les mots qui sont repris plusieurs fois")
        test = False
        For i = 0 To k - 1
            If A(i) >= 2 Then
                Console.WriteLine(" Le mot " & UCase(m(i)) & " est repris  " & A(i) & " fois")
                test = True
            End If
        Next
        If test = False Then
            Console.WriteLine("Aucun mot n'est repris plusieurs fois")
        End If
        Console.ReadLine()
    End Sub
End Module

EXERCICE 31

EXERCICE 31

Ecrire un programme Basic qui lit le nom, prénom et salaire de chacun de 200 travailleurs d’une entreprise. Ensuite le programme trie et affiche cette liste par ordre décroissant des salaires, puis des noms en cas de montants de salaire identiques. (Prévoir une structure et le montant de salaire ne peut pas être inférieure à 0).

Solution

Solution


Module Module1
    Structure Employe
        Dim nom As String
        Dim prenom As String
        Dim salaire As Integer
    End Structure
    Sub Main()
        Dim liste(5) As Employe
        Dim a As Employe
        Dim i, j As Integer
        'Lecture des informations 
        Console.WriteLine("Lecture des informations sur les employés")
        For i = 0 To 199
            Console.WriteLine("Entrez les informations de l'employé n° " & i + 1)
            Console.Write("Nom: ")
            liste(i).nom = Console.ReadLine()
            Console.Write("Prénom: ")
            liste(i).prenom = Console.ReadLine()
5:          Console.Write("salaire: ")
            liste(i).salaire = CInt(Console.ReadLine())
            If liste(i).salaire < 0 Then
                Console.WriteLine("Le salaire est incorrect, recommencez")
                GoTo 5
            End If
        Next
        'tri 
        For i = 199 To 1 Step -1
            For j = 0 To i - 1
                If liste(j).salaire < liste(j +1).salaire Then
                    a = liste(j)
                    liste(j) = liste(j + 1)
                    liste(j + 1) = a
                ElseIf liste(j).salaire = liste(j +1).salaire Then
                    If liste(j).nom < liste(j + 1).nom Then
                        a = liste(j)
                        liste(j) = liste(j + 1)
                        liste(j + 1) = a
                    End If
                End If
            Next
        Next
        'on affiche la nouvelle liste 
        Console.WriteLine("Voici la liste des employés selon le salaire")
        Console.WriteLine("Nom" & Space(10) & "Prénom" & Space(10) & " Salaire")
        For i = 0 To 199
            Console.WriteLine(liste(i).nom & Space(10) & liste(i).prenom & Space(10) & liste(i).salaire)
        Next
        Console.ReadLine()
    End Sub
End Module

EXERCICE 32

EXERCICE 32

Soit un tableau B (7,7) constitué des valeurs numériques. Ecrire un programme Basic qui après la lecture des données, calcule :

  • La somme de chaque ligne
  • La somme de chaque colonne
  • La somme totale de tous les éléments du tableau

Solution

Solution


Module Module1
    Sub Main()
        Dim B(7, 7) As Integer
        Dim i, j As Integer
        Dim somLigne(7) As Integer
        Dim somColonne(7) As Integer
        Dim somme As Integer
        'Lecture des éléments 
        For i = 0 To 7
            For j = 0 To 7
                Console.WriteLine("Entrez l'élément B(" & i & "," & j & ")")
                B(i, j) = CInt(Console.ReadLine())
            Next
        Next

        'calcul de la  somme de chaque ligne 
        For i = 0 To 7
            somLigne(i) = 0
            For j = 0 To 7
                somLigne(i) += B(i, j)
            Next
        Next

        'calcul de la  somme de chaque colonne 
        For j = 0 To 7
            somColonne(j) = 0
            For i = 0 To 7
                somColonne(j) += B(i, j)
            Next
        Next
        'calcul de la somme total 
        somme = 0
        For i = 0 To 7
            For j = 0 To 7
                somme += B(i, j)
            Next
        Next
        'affichage des résultats 
        For i = 0 To 7
            Console.WriteLine("La somme de la " & i & "e ligne est: " & somLigne(i))
        Next
        For j = 0 To 7
            Console.WriteLine("La somme de la " & i & "e colonne est: " & somColonne(j))
        Next
        Console.WriteLine("La somme totale est: " & somme)
        Console.ReadLine()
    End Sub
End Module

EXERCICE 33

EXERCICE 33

Ecrire un programme Basic qui donne la liste de tous les nombres de AMSTRONG compris entre 1 et 2000. (Les nombres de AMSTRONG sont des nombres qui sont égaux à la somme des cubes des chiffres qui les composent. Par exemple 153 est un nombre de AMSTRONG, car 153=1³+5³+3³

Solution

Solution


Module Module1
    Sub Main()
        Dim n, i, j, k As Integer
        Dim chaine As String
        Dim somme As Long
        Console.WriteLine("Voici les nombres de AMSTRONG compris entre 1 et 2000")

        For i = 1 To 2000
            'on affecte chaque nombre à la variable chaine pour une  manipulation aisée 
            chaine = Str(i)
            n = Len(chaine)
            somme = 0
            For j = 1 To n
                k = Val(Mid(chaine, j, 1))
                somme += k ^ 3
            Next
            If i = somme Then
                Console.WriteLine(i.ToString)
            End If
        Next
        Console.ReadLine()
    End Sub
End Module

EXERCICE 34

EXERCICE 34

Une entreprise rémunère ses représentants commerciaux à la commission. Ceux-ci reçoivent 200$ par semaine plus 9% de leurs ventes brutes hebdomadaires. Par exemple, un représentant qui totalise des ventes brutes hebdomadaires de 5000$ reçoit 200$ plus 9% de 5000$, soit un total de 650$. Ecrivez un programme Basic qui déterminera combien de représentants ont perçu des émoluments situés dans chacune des échelles salariales ci-dessus et l’échelle salariale qui a le nombre le moins élevé (précisez que le salaire de chaque représentant est arrondi à l’entier le plus près).

$200-$299     $300-$399     $400-$499
$500-$599     $600-$699     $700-$799
$800-$899     $900-$999     $1000 et plus

Solution

Solution


Module Module1
    Sub Main()
        Dim n, i, min, pos As Integer
        'la variable qui va stocker le nombre de représentants dans chaque échelle 
        Dim nombre() As Integer = {0, 0, 0, 0, 0, 0, 0, 0, 0}
        Console.WriteLine("Entrez le nombre de représentants")
        n = CInt(Console.ReadLine())
        Dim ventes(n - 1) As Integer
        Dim salaire(n - 1) As Integer
        'Lecture des ventes brutes de chaque représentant 
        For i = 0 To n - 1
            Console.WriteLine("Entrez les ventes brutes du représentant n ° " & i + 1)
            ventes(i) = CInt(Console.ReadLine())
        Next
        'calcul de salaire 
        For i = 0 To n - 1
            salaire(i) = Int(200 + 0.09 * ventes(i))
        Next
        'Determination de nombre de représentants dans chaque échelle  
        For i = 0 To n - 1
            If salaire(i) >= 200 And salaire(i) <= 299 Then
                nombre(0) += 1
            ElseIf salaire(i)  >= 300 And salaire(i) <= 399 Then
                nombre(1) += 1
            ElseIf salaire(i)  >= 400 And salaire(i) <= 499 Then
                nombre(2) += 1
            ElseIf salaire(i)  >= 500 And salaire(i) <= 599 Then
                nombre(3) += 1
            ElseIf salaire(i)  >= 600 And salaire(i) <= 699 Then
                nombre(4) += 1
            ElseIf salaire(i)  >= 700 And salaire(i) <= 799 Then
                nombre(5) += 1
            ElseIf salaire(i)  >= 800 And salaire(i) <= 899 Then
                nombre(6) += 1
            ElseIf salaire(i)  >= 900 And salaire(i) <= 999 Then
                nombre(7) += 1
            ElseIf salaire(i)  >= 1000 Then
                nombre(8) += 1
            End If
        Next
        'determination de l'effectif le plus faible 
        min = nombre(0)
        pos = 0
        For i = 1 To 8
            If nombre(i) < min Then
                min = nombre(i)
                pos = i
            End If
        Next
        'Affichage résultats 
        Console.WriteLine(nombre(0) & " représentant(s) a(ont) un salaire situé entre 200-299")
        Console.WriteLine(nombre(1) & " représentant(s) a(ont) un salaire situé entre 300-399")
        Console.WriteLine(nombre(2) & " représentant(s) a(ont) un salaire situé entre 400-499")
        Console.WriteLine(nombre(3) & " représentant(s) a(ont) un salaire situé entre 500-599")
        Console.WriteLine(nombre(4) & " représentant(s) a(ont) un salaire situé entre 600-699")
        Console.WriteLine(nombre(5) & " représentant(s) a(ont) un salaire situé entre 700-799")
        Console.WriteLine(nombre(6) & " représentant(s) a(ont) un salaire situé entre 800-899")
        Console.WriteLine(nombre(7) & " représentant(s) a(ont) un salaire situé entre 900-999")
        Console.WriteLine(nombre(8) & " représentant(s) a(ont) un salaire superieur ou égal à 1000")
        Select Case pos
            Case 0
                Console.WriteLine("C'est l'échelle 200-299 qui a moins de représentants ")
            Case 1
                Console.WriteLine("C'est l'échelle 300-399 qui a moins de représentants ")
            Case 2
                Console.WriteLine("C'est l'échelle 400-499 qui a moins de représentants ")
            Case 3
                Console.WriteLine("C'est l'échelle 500-599 qui a moins de représentants ")
            Case 4
                Console.WriteLine("C'est l'échelle 600-699 qui a moins de représentants ")
            Case 5
                Console.WriteLine("C'est l'échelle 700-799 qui a moins de représentants ")
            Case 6
                Console.WriteLine("C'est l'échelle 800-899 qui a moins de représentants ")
            Case 7
                Console.WriteLine("C'est l'échelle 900-999 qui a moins de représentants ")
            Case 8
                Console.WriteLine("C'est l'échelle 1000 et plus qui a moins de représentants ")
        End Select
        Console.ReadLine()
    End Sub
End Module

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