Mes débuts en VB
Spoddysweg42
Messages postés
1
Statut
Membre
-
NHenry Messages postés 15480 Date d'inscription Statut Modérateur Dernière intervention -
NHenry Messages postés 15480 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour, je poste ici mon premier message pour vous montrer un de mes premiers codes.
Depuis peu je me suis lancé dans la programmation en Vb.net, et je m'essaye au code.
J'ai récemment codé une petite application qui permet de traiter deux chaînes de caractères pour vérifier si elle correspondent à un anagramme.
L'application fonctionne très bien, mais un ami m'a dit que le code était "Assez pauvre" des idées pour l'améliorer ?
Depuis peu je me suis lancé dans la programmation en Vb.net, et je m'essaye au code.
J'ai récemment codé une petite application qui permet de traiter deux chaînes de caractères pour vérifier si elle correspondent à un anagramme.
L'application fonctionne très bien, mais un ami m'a dit que le code était "Assez pauvre" des idées pour l'améliorer ?
Option Explicit On
Option Strict On
Module Module1
Sub Main()
Dim mot1, mot2 As String 'On déclare deux variable qui contiendront les mots à tester
Console.Clear()
Console.WriteLine("Entrez deux noms pour voir si ce sont des anagrammes")
Console.WriteLine("Ou tappez 'exit' pour quitter la console")
mot1 = Console.ReadLine()
If mot1 = "exit" Then
Exit Sub
Else
mot2 = Console.ReadLine() 'On va lancer notre fonction pour tester les mots
If f_is_anagram(mot1, mot2) Then
Console.WriteLine("Oui c'est un anagramme !")
Else
Console.WriteLine("Non, Ce n'est pas un anagramme")
End If
Console.ReadLine()
Main()
End If
End Sub
Function f_is_anagram(ByVal mot1 As String, ByVal mot2 As String) As Boolean 'On passe par le ByVal car on ne modifie pas les données des variables mot1 et mot2
'On effectue un test de longueur des mots, s'ils n'ont pas la mêne longueur ils ne sont pas des anagrammes
Dim motTemp As String = mot1
If mot1.Length <> mot2.Length Then
Return False
End If
'On effectue un test qui prends les lettres du mot 1 pour les retirer au mot 2
For i = 0 To mot2.Length - 1
motTemp = f_erase(mot1, Mid(mot2, i + 1, 1))
mot1 = motTemp
Next
If motTemp.Length = 0 Then
Return True
Else
Return False
End If
End Function
'On passe un nom et une lettre et la fonction nous retourne le nom en enlevant la lettre si elle y est présente
Function f_erase(ByVal pTexte As String, ByVal pLettre As String) As String
Dim i As Integer = 0
Dim texte As String = pTexte
While i < pTexte.Length
If Mid(pTexte, i + 1, 1) = pLettre Then
Return texte.Remove(i, 1)
End If
i = i + 1
End While
Return texte
End Function
End Module
A voir également:
- Mes débuts en VB
- Vb - Télécharger - Langages
- Vb audio cable - Télécharger - Audio & Musique
- Vb editor - Télécharger - Langages
- Vb runtime - Télécharger - Divers Utilitaires
- Comment faire un point en debut de phrase sur word - Guide
1 réponse
Retires l'import automatique de "Microsoft.VisualBasic" (propriétés du projet -> "références"), car cet espace de nom est juste un élément de compatibilité qui ne sert que pour les transformations de VB6 -> VB.NET.
Mid(Machaine, ...) -> MaChaine.SubString(...)
Une autre solution serait de prendre les lettres et de les ranger par ordre croissant :
(Implicitement, Option Infer On)
(Code tapé directement sur le forum, peut contenir des erreurs)
Ensuite tu compares les 2 tableaux (en ignorant la ponctuation et les espaces).
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"
Mid(Machaine, ...) -> MaChaine.SubString(...)
Une autre solution serait de prendre les lettres et de les ranger par ordre croissant :
(Implicitement, Option Infer On)
dim ltChaine1=(FROM lChar In MaChaine1.ToLower().ToCharArray() ORDER By lChar).ToArray() dim ltChaine2=(FROM lChar In MaChaine2.ToLower().ToCharArray() ORDER By lChar).ToArray()
(Code tapé directement sur le forum, peut contenir des erreurs)
Ensuite tu compares les 2 tableaux (en ignorant la ponctuation et les espaces).
J'interviens principalement en VB6 et VB.NET, avec un peu de C#, mais la modération m'amène souvent sur d'autre langages.
En VB.NET pensez à activer "Option Explicit" et "Option Strict"