Le guichet unique de Boma organise la tarification des containers des produits manufacturés à l’aide des rubriques : frais de dédouanement (fd), frais de contrôle de qualité (focc) et frais de l’Onatra (fo).
Les frais du dédouanement exprimés en unité monétaire sont déterminés à partir des catégories, suivant le tableau ci-après :
Catégorie | Prix/kilo |
---|---|
Engrais chimiques et semences améliorées | 0,25 |
Produits vivriers et pharmaceutiques | 0,5 |
Fournitures de bureau et scolaires | 0,75 |
Matériaux de construction | 1 |
Pièces de rechange | 1,5 |
Divers | 2 |
Les frais de contrôle de qualité valent 4% des frais de dédouanement.
Les frais de l’Onatra sont composés de deux parties : frais de manutention
(fm) et frais d’emmagasinage (fe). La catégorie « Engrais chimiques et semences améliorées » en est exonérée.
Les frais de manutention sont calculés en fonction du poids des containers.
Ils sont calculés de la manière suivante : Jusqu’à 100 tonnes, les frais sont fixés à 0.005/kilo et à partir de la 101ème tonne, les frais sont fixés à 0.003/kilo.
Les frais d’emmagasinage sont calculés en fonction du nombre de containers. Ils valent 20 unités monétaires par container et par jour.
On vous demande d’écrire un programme Visual basic en mode console constitué d’un module principal et des fonctions chargées de calculer : frais de dédouanement, frais de contrôle de qualité, frais de manutention(fm) et frais d’emmagasinage(fe).
Module Module1
Sub Main()
Dim cat As String
Dim fd, focc, fm, fe, fo, np As Long
Dim nbre_jrs, nbre_c, poids As Integer
5: Console.WriteLine("Entrez la catégorie")
cat = Console.ReadLine
Console.WriteLine("Entrez le poids")
poids = CInt(Console.ReadLine())
Console.WriteLine("Entrez le nombre de containers")
nbre_c = CInt(Console.ReadLine())
Console.WriteLine("Entrez le nombre de jours d'emmagasinage")
nbre_jrs = Console.ReadLine
fd = dedouanement(cat, poids)
focc = controle(fd)
If UCase(cat) = "ENGRAIS CHIMIQUES ET SEMENCES AMELIOREES" Then
fo = 0
Else
fm = manutention(poids)
fe = emmagasinage(nbre_c, nbre_jrs)
fo = fm + fe
End If
If fm = 0 Or fd = 0 Then
Console.WriteLine("Il y a eu erreur des données, recommencez")
GoTo 5
Else
np = fd + fo + focc
Console.WriteLine("Le net à payer est: " & np)
End If
Console.ReadLine()
End Sub
'fonction qui calcule les frais de dédouanement
Function dedouanement(ByVal cat As String, ByVal poids As Integer) As Long
Dim fd As Long
If UCase(cat) = "ENGRAIS CHIMIQUES ET SEMENCES AMELIOREES" Then
fd = poids * 1000 * 0.25
ElseIf UCase(cat) = "PRODUITS VIVRIERS ET PHARMACEUTIQUES" Then
fd = poids * 1000 * 0.5
ElseIf UCase(cat) = "FOURNITURES DE BUREAU ET SCOLAIRES" Then
fd = poids * 1000 * 0.75
ElseIf UCase(cat) = "MATERIAUX DE CONSTRUCTION" Then
fd = poids * 1000 * 1
ElseIf UCase(cat) = "PIECES DE RECHANGE" Then
fd = poids * 1000 * 1.5
ElseIf UCase(cat) = "DIVERS" Then
fd = poids * 1000 * 2
Else
Console.WriteLine("catégorie incorrecte")
fd = 0
End If
Return fd
End Function
'fonction qui calcule les frais de contrôle de qualité
Function controle(ByVal fd As Long) As Long
Dim focc As Long
focc = fd * 0.04
Return focc
End Function
'fonction qui calcule les frais de manutention
Function manutention(ByVal poids As Integer) As Long
Dim fm As Long
If poids >= 0 And poids <= 100 Then
fm = poids * 1000 * 0.005
ElseIf poids > 100
fm = 100 * 1000 * 0.005 + (poids - 100) * 1000 * 0.003
Else
Console.WriteLine("poids incorrect")
fm = 0
End If
Return fm
End Function
'fonction qui calcule les frais d'emmagasinage
Function emmagasinage(ByVal nbreC As Integer, ByVal nbJ As Integer) As Long
Dim fe As Long
fe = 20 * nbreC * nbJ
Return fe
End Function
End Module
Un magasin de la place organise le payement de salaire de ses employés à l’aide des rubriques : salaire de base (sb) et prime familiale (pf) :
Les salaires de base exprimés en unité monétaire sont déterminés à partir des grades, suivant le tableau ci-après :
Grade | Salaire de base |
---|---|
Gérant | 200 |
Comptable | 180 |
Caissier | 160 |
Facturier | 150 |
Livreur | 130 |
Vendeur | 110 |
La prime familiale est composée de deux parties : de la prime mariage (pm) et de la prime enfant (pe). La prime mariage est octroyée à tous les agents qui ne sont pas célibataires (c.à.d. mariés, divorcés ou veufs). Elle vaut 2% du salaire de base de l’agent.
La prime enfant est calculée en fonction du nombre d’enfants vivants de moins de 19 ans. Elle est calculée de la manière suivante : Jusqu’à 5 enfants, chacun génère une prime fixe de 50. A partir du 6ème enfant, la prime fixe devient de 20. Enfin, pas de prime à partir du 11e enfant.
On vous demande d’écrire un programme Visual basic en mode console constitué d’un module principal et des fonctions chargées de calculer : le salaire de base, la prime mariage et la prime enfant.
Module Module1
Sub Main()
Dim grade, etat_civil As String
Dim nef, sb, pe, pm, pf, sn As Integer
5: Console.WriteLine("Entrez le grade de l'agent")
grade = Console.ReadLine()
Console.WriteLine("Entrez son état civil")
etat_civil = Console.ReadLine()
Console.WriteLine("Entrez le nombre d'enfants")
nef = CInt(Console.ReadLine())
'Appel des fonctions
sb = salaireBase(grade)
pm = primeMariage(etat_civil, sb)
pe = PrimeEnfant(nef)
pf = pm + pe
If sb = 0 Or pe = -1 Or pm = -1 Then
Console.WriteLine("Données incorrectes, recommencez")
GoTo 5
Else
sn = sb + pf
Console.WriteLine("Le salaire net vaut : " & sn)
End If
Console.ReadLine()
End Sub
'fonction qui calcule le salaire de base
Function salaireBase(ByVal grade As String) As Integer
Dim sb As Integer
If UCase(grade) = "GERANT" Then
sb = 200
ElseIf UCase(grade) = "COMPTABLE" Then
sb = 180
ElseIf UCase(grade) = "CAISSIER" Then
sb = 160
ElseIf UCase(grade) = "FACTURIER" Then
sb = 150
ElseIf UCase(grade) = "LIVREUR" Then
sb = 130
ElseIf UCase(grade) = "VENDEUR" Then
sb = 110
Else
sb = 0
End If
Return sb
End Function
'fonction qui calcule la prime mariage
Function primeMariage(ByRef etatCivil As String, ByVal sb As Integer) As Integer
Dim pm As Integer
If UCase(etatCivil) <> "CELIBATAIRE" Or UCase(etatCivil) <> "MARIE(E)" Or UCase(etatCivil) <> "DIVORCE(E)" Or UCase(etatCivil) <> "VEUF(VE)" Then
pm = -1
End If
If UCase(etatCivil) = "CELIBATAIRE" Then
pm = 0
Else
pm = sb * 0.02
End If
Return pm
End Function
'fonction qui calcule la prime enfant
Function PrimeEnfant(ByRef nef As Integer) As Integer
Dim pe As Integer
Select Case (nef)
Case 0 To 5
pe = nef * 50
Case 6 To 10
pe = 5 * 50 + (nef - 5) * 20
Case Is > 10
pe = 5 * 50 + 5 * 20
Case Else
pe = -1
End Select
Return pe
End Function
End Module
Ecrire un programme Visual basic en mode console qui lit une phrase, une lettre se trouvant dans la phrase et une autre lettre quelconque, et ensuite le programme remplace à chaque occurrence la première lettre par la deuxième
Module Module1
Sub Main()
Dim chaine, lettre1, lettre2 As String
Dim test As Boolean = False
Dim i As Integer
Console.WriteLine("Entrez la chaine")
chaine = Console.ReadLine()
1: Console.WriteLine("Entrez la lettre à remplacer")
lettre1 = Console.ReadLine()
'on vérifie si la lettre se trouve dans la chaine
For Each caractere As String In chaine
If caractere = lettre1 Then
test = True
End If
Next
If test = True Then
GoTo 5
Else
Console.WriteLine("La lettre de se trouve pas dans la chaine, recommencez")
GoTo 1
End If
'remplacement
5: Console.WriteLine("Entrez la lettre de remplacement")
lettre2 = Console.ReadLine()
For i = 1 To Len(chaine)
If Mid(chaine, i, 1) = lettre1 Then
Mid(chaine, i, 1) = lettre2
End If
Next
Console.WriteLine("La chaine après remplacement est : " & chaine)
Console.ReadLine()
End Sub
End Module
Ecrire un programme Visual basic en mode console qui demande un mot puis donne le mot miroir. Par exemple, si l’utilisateur saisit DIUMI, le programme affiche « IMUID ».
Module Module1
Sub Main()
Dim mot, s As String
Dim i As Integer
Console.WriteLine("Entrez le mot")
mot = Console.ReadLine()
For i = 1 To Len(mot) \ 2
s = Mid(mot, i, 1)
Mid(mot, i, 1) = Mid(mot, Len(mot) - i + 1, 1)
Mid(mot, Len(mot) - i + 1, 1) = s
Next
Console.WriteLine("Le mot miroir est : " & mot)
Console.ReadLine()
End Sub
End Module
Ecrire un programme qui permet de dire si un mot est un mot palindrome, c.à.d. identique à son mot miroir. Exemple : KAYAK, ESSE….
Module Module1
Sub Main()
Dim mot As String
Dim i As Integer = 1
Dim test As Boolean = True
Console.WriteLine("Entrez le mot")
mot = Console.ReadLine()
For i = 1 To Len(mot) \ 2
If Mid(mot, i, 1) <> Mid(mot, Len(mot) - i + 1, 1) Then
test = False
End If
Next
If test = True Then
Console.WriteLine("Le mot est palindrome")
Else
Console.WriteLine("Le mot n'est pas palindorme")
End If
Console.ReadLine()
End Sub
End Module
Ecrire en Visual basic mode console une procédure decale1 qui reçoit en argument un tableau d’entiers t (à une dimension) et un entier positif inferieur la taille du tableau, puis décale les éléments du tableau d’un pas n vers la gauche de façon circulaire. Si le tableau initialement :
5 | 2 | 3 | 0 | 8 | 7 | 3 | 1 |
Si n=2, la procédure le transforme en :
3 | 1 | 5 | 2 | 3 | 0 | 8 | 7 |
Module Module1
Sub Main()
Dim m, n As Integer
Console.WriteLine("Entrez la taille du tableau")
m = CInt(Console.ReadLine())
Dim T(m - 1) As Integer
Do
Console.WriteLine("Entrez le décalage")
n = CInt(Console.ReadLine())
Loop Until n < m
For I As Integer = 0 To T.Length - 1
Console.WriteLine("entrer l'élément n° " & I + 1)
T(I) = CInt(Console.ReadLine())
Next
decale1(T, n)
End Sub
Sub decale1(ByRef A() As Integer, ByVal n As Integer)
Dim k As Integer = A.Length
Dim b(k - 1) As Integer
Dim i As Integer
For i = 0 To k - n - 1
b(i) = A(i + n)
Next
For i = 0 To n - 1
b(k - n + i) = A(i)
Next
Console.WriteLine(" voici le nouveau tableau après décalage")
For i = 0 To k - 1
Console.WriteLine(b(i).ToString)
Next
Console.ReadLine()
End Sub
End Module
Ecrire une procédure en Visual basic mode console qui détermine, puis affiche le plus grand entier pair contenu dans un tableau d’entiers strictement positifs. Attention si le tableau ne contient aucun entier pair, la procédure affichera le message « Le tableau ne contient aucun entier pair »
Module Module1
Sub Main()
Dim n, i As Integer
Console.WriteLine("Entrez la taille du tableau")
n = CInt(Console.ReadLine())
Dim A(n - 1) As Integer
Console.WriteLine("Lecture des éléments du tableau")
For i = 0 To n - 1
5: Console.WriteLine("Entrez l'élément n° " & i + 1)
A(i) = CInt(Console.ReadLine())
If A(i) < 0 Then
Console.WriteLine("entrez un nombre positif seulement, recommencez")
GoTo 5
End If
Next
affiche_pair(A)
Console.ReadLine()
End Sub
Sub affiche_pair(ByVal A() As Integer)
Dim max, i As Integer
max = 0
For i = 0 To A.Length - 1
If A(i) Mod 2 = 0 Then
If A(i) > max Then
max = A(i)
End If
End If
Next
If max = 0 Then
Console.WriteLine("Le tableau ne contient aucun entier pair")
Else
Console.WriteLine("Le plus grand entier pair du tableau est: " & max)
End If
End Sub
End Module