Code vb téléphone

Résolu
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006 - 8 oct. 2006 à 03:47
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 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

        Console.ReadLine()
    End Sub

End Module
-------------------------

3 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
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.
3
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 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

        Console.ReadLine()
    End Sub

End Module
----------------------
3
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
8 oct. 2006 à 18:50
encore remodifier, mais pour la dernière fois cette fois-ci, je suis satisfait.
dite moi vos commentaires dessus!
---------------------------


Module Module1



Sub
Main()




Dim
nomVille, typeStatut

As



String








Dim
reductStatut, coutRegion, sommeFacture, 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 = Console.ReadLine()

Console.WriteLine(


"Entrez votre ville"
)nomVille = Console.ReadLine()

Console.WriteLine(


"Entrez votre statut <étudiant, retraité ou travailleur>"
)typeStatut = Console.ReadLine()


If
teleMinute <> 0

And
nomVille <>

""



And
typeStatut <>

""



Then



'détermine si l'utilisateur a oublié une donner






If
teleMinute >= 350 / 3

And
teleMinute <= 150

Then



'sélection du meilleur plan, affichage du meilleur plan

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






'selection de la géographie pour la taxe géographique






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()

'sélection du statut de la personne pour déterminer la réduction versus son statut






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(




"Coût de base : $"
& teleMinute)

'affichage du coût de base

Console.WriteLine(




"Taxe géographique : $"
& coutRegion)

'affichage de la taxe géographique

reductStatut = reductStatut * (teleMinute + coutRegion)




'calcule de la réduction

Console.WriteLine(




"Réduction : $"
& reductStatut)

'affichage de la réduction

sommeFacture = (teleMinute + coutRegion - reductStatut)




'calcule de la facture au totale

Console.WriteLine(




"Coût net : $"
& sommeFacture)

'affichage de la facture






Else

Console.WriteLine(




"Nombre de minutes, ville ou statut absents"
)

'affiche lorsque l'utilisateur a oublié d'entrer une donner






End



If 



Console.ReadLine()







End



SubEnd





Module
-----------------------------
3
Rejoignez-nous