cs_mathben
Messages postés30Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention10 décembre 2006
-
8 oct. 2006 à 03:47
cs_mathben
Messages postés30Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention10 décembre 2006
-
8 oct. 2006 à 18:50
Bonjour tout le monde, je suis en train de programme un devoir, mais il a un problème et je ne comprend pas trop, vous pouvez m'aider?
merci
-----------------
Module Module1
Sub Main()
Dim nomVille, typeStatut As String
Dim reductStatut, coutRegion, sommeFacture As Byte
Dim teleMinute As Single
Console.WriteLine("Télé mobilité")
Console.WriteLine("Plan 1 : À la carte -- 30 cents la minute")
Console.WriteLine("Plan 2 : Forfait de 35$ par mois pour 150 minutes max")
Console.WriteLine("Plan 3 : Forfait de 60$ par mois pour appels illimités")
Console.WriteLine()
Console.WriteLine("Entrez le nombre de minutes")
teleMinute = CSng(Console.ReadLine())
Console.WriteLine("Entrez votre ville")
nomVille = Console.ReadLine()
nomVille.ToUpper()
Console.WriteLine("Entrez votre statut <étudiant, retraité ou travailleur>")
typeStatut = Console.ReadLine()
typeStatut.ToUpper()
If teleMinute <> "" Or nomVille <> "" Or typeStatut <> "" Then
Select Case teleMinute
Case ">= 350/3" And "<= 150"
teleMinute = 35
Console.WriteLine("Meilleur plan : Plan 2")
Case ">= 200"
teleMinute = 60
Console.WriteLine("Meilleur plan : Plan 3")
Case Else
teleMinute = (teleMinute * 0.3)
Console.WriteLine("Meilleur plan : Plan 1")
End Select
Console.WriteLine("Coût de base : $" & teleMinute) If nomVille "MONTREAL" Or nomVille "QUEBEC" Then
coutRegion = 0
Else
coutRegion = 2.25
End If
Select Case typeStatut
Case "ETUDIANT"
reductStatut = 1 / 2
Case "RETRAITE"
reductStatut = 1 / 4
Case "TRAVAILLEUR"
reductStatut = 1 / 10
Case Else
reductStatut = 0
End Select
Console.WriteLine("Taxe géographique : $" & coutRegion)
reductStatut = reductStatut * teleMinute
Console.WriteLine("Réduction : $" & reductStatut)
sommeFacture = (teleMinute + coutRegion - reductStatut)
Console.WriteLine("Coût net : $" & sommeFacture)
Else
Console.WriteLine("Nombre de minutes, ville ou statut absents")
End If
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 8 oct. 2006 à 11:10
C'est à cause de ton Select, lorsque tes conditions de Case deviennent complexes, il est préférable d'utiliser If - ElseIf :
Dim nomVille As String, typeStatut As String
Dim reductStatut, coutRegion, sommeFacture As Byte
Dim teleMinute As Single
Console.WriteLine("Télé mobilité")
Console.WriteLine("Plan 1 : À la carte -- 30 cents la minute")
Console.WriteLine("Plan 2 : Forfait de 35$ par mois pour 150 minutes max")
Console.WriteLine("Plan 3 : Forfait de 60$ par mois pour appels illimités")
Console.WriteLine()
Console.WriteLine("Entrez le nombre de minutes")
teleMinute = CSng(Console.ReadLine())
Console.WriteLine("Entrez votre ville")
nomVille = Console.ReadLine()
nomVille.ToUpper()
Console.WriteLine("Entrez votre statut <étudiant, retraité ou travailleur>")
typeStatut = Console.ReadLine()
typeStatut.ToUpper()
If teleMinute <> 0 Or nomVille <> "" Or typeStatut <> "" Then
If teleMinute >= 350 / 3 And teleMinute <= 150 Then
teleMinute = 35
Console.WriteLine("Meilleur plan : Plan 2")
ElseIf teleMinute >= 200 Then
teleMinute = 60
Console.WriteLine("Meilleur plan : Plan 3")
Else
teleMinute = (teleMinute * 0.3)
Console.WriteLine("Meilleur plan : Plan 1")
End If
Console.WriteLine("Coût de base : $" & teleMinute)
If nomVille "MONTREAL" Or nomVille "QUEBEC" Then
coutRegion = 0
Else
coutRegion = 2.25
End If
Select Case typeStatut
Case "ETUDIANT"
reductStatut = 1 / 2
Case "RETRAITE"
reductStatut = 1 / 4
Case "TRAVAILLEUR"
reductStatut = 1 / 10
Case Else
reductStatut = 0
End Select
Console.WriteLine("Taxe géographique : $" & coutRegion)
reductStatut = reductStatut * teleMinute
Console.WriteLine("Réduction : $" & reductStatut)
sommeFacture = (teleMinute + coutRegion - reductStatut)
Console.WriteLine("Coût net : $" & sommeFacture)
Else
Console.WriteLine("Nombre de minutes, ville ou statut absents")
End If
Console.ReadLine()
(Tu ferais peut-être bien de vérifier les entrées utilisateurs pour le status)
Julien.
cs_mathben
Messages postés30Date d'inscriptionvendredi 18 novembre 2005StatutMembreDernière intervention10 décembre 2006 8 oct. 2006 à 17:53
je l'ai remodifié, merci julien pour m'avoir suggéré les si
comme je suis têtu, j'ai trouvé une facon avec les selection, mais j'ai du rajouter la variable a
et ensuite, j'ai corrigé plein de faute, mon programme n'a plus d'erreur ^^ (c'était un devoir pour mon professeur)
le trouvez-vous correct? Je dois rajouter des commentaires.
voici la dernière version, je vais en faire un autre plus clair
----------------------
Module Module1
Sub Main()
Dim nomVille, typeStatut, teleMinute As String
Dim reductStatut, coutRegion, sommeFacture, tempsMinute, a As Single
Console.WriteLine("Télé mobilité")
Console.WriteLine("Plan 1 : À la carte -- 30 cents la minute")
Console.WriteLine("Plan 2 : Forfait de 35$ par mois pour 150 minutes max")
Console.WriteLine("Plan 3 : Forfait de 60$ par mois pour appels illimités")
Console.WriteLine()
Console.WriteLine("Entrez le nombre de minutes")
teleMinute = Console.ReadLine()
Console.WriteLine("Entrez votre ville")
nomVille = Console.ReadLine()
Console.WriteLine("Entrez votre statut <étudiant, retraité ou travailleur>")
typeStatut = Console.ReadLine()
If teleMinute <> "" And nomVille <> "" And typeStatut <> "" Then
a = (350 / 3)
Select Case CType(teleMinute, Single)
Case a To 150
tempsMinute = 35
Console.WriteLine("Meilleur plan : Plan 2")
Case Is >= 200
tempsMinute = 60
Console.WriteLine("Meilleur plan : Plan 3")
Case Else
tempsMinute = (CType(teleMinute, Single) * 0.3)
Console.WriteLine("Meilleur plan : Plan 1")
End Select
Console.WriteLine("Coût de base : $" & tempsMinute) If nomVille.ToUpper() "MONTREAL" Or nomVille.ToUpper() "MONTRÉAL" Or nomVille.ToUpper() = "MTL" Or nomVille.ToUpper() = "QUEBEC" Or nomVille.ToUpper() = "QUÉBEC" Or nomVille.ToUpper() = "QC" Then
coutRegion = 0
Else
coutRegion = (2.25)
End If
Select Case typeStatut.ToUpper()
Case "ETUDIANT", "ÉTUDIANT"
reductStatut = 1 / 2
Case "RETRAITE", "RETRAITÉ"
reductStatut = 1 / 4
Case "TRAVAILLEUR"
reductStatut = 1 / 10
Case Else
reductStatut = 0
End Select
Console.WriteLine("Taxe géographique : $" & coutRegion)
reductStatut = reductStatut * (tempsMinute + coutRegion)
Console.WriteLine("Réduction : $" & reductStatut)
sommeFacture = (tempsMinute + coutRegion - reductStatut)
Console.WriteLine("Coût net : $" & sommeFacture)
Else
Console.WriteLine("Nombre de minutes, ville ou statut absents")
End If