Tri par Ordre Alphabétique

0/5 (3 avis)

Snippet vu 5 467 fois - Téléchargée 13 fois

Contenu du snippet

Module Module1
    Sub Main()
        Dim r As Char 'variable pour la fonction Sans-Accent
        Dim text, Mot, temp, temp1 As String 'variables de transfert temporaire
        Dim Nom(5) As String  'Tableau véritable
        Dim Name(5) As String 'Tableau de traitement

        'Saisies

        For i As Integer = 1 To 5
            Console.Write("tapez votre mot    N° " & i & "    ")
            text = Console.ReadLine         'Saisie d'un mot dans la variable de transfert
            Nom(i) = text                   'Remplir le tableau véritable
            Mot = ""                        'Vider la variable de transfert
            For j As Integer = 1 To Len(text)
                r = Sans_Accents(Mid(text, j, 1))
                Mot &= r
            Next
            Name(i) = Mot.ToLower            'Remplir le tableau de traitement
        Next

        'Tri à bulle
        For i As Integer = 1 To 4
            For j As Integer = i + 1 To 5
                If Name(i) > Name(j) Then   'Traitement
                    temp1 = Name(i)         'Swap sur le tablau de traitement
                    Name(i) = Name(j)
                    Name(j) = temp1

                    temp = Nom(i)           'Swap sur le tableau véritable
                    Nom(i) = Nom(j)
                    Nom(j) = temp
                End If
            Next
        Next

        'Affichage
        Console.WriteLine()
        For i As Integer = 1 To 5
            Console.WriteLine(Nom(i))
        Next

        Console.ReadLine()

    End Sub

    Function Sans_Accents(ByVal Lt As Char) As Char
        Dim Res As Char
        Select Case Lt
            Case "à", "â", "ä"
                Res = "a"
            Case "é", "è", "ê", "ë"
                Res = "e"
            Case "î", "ï"
                Res = "i"
            Case "ô", "ö"
                Res = "o"
            Case "ù", "û", "ü"
                Res = "u"
            Case "ÿ"
                Res = "y"
            Case "ç"
                Res = "c"
            Case Else
                Return Lt       'Retourne les caractères non mentionnés     
        End Select
        Return Res              'Retourne les caractères mentionnés
    End Function

End Module

A voir également

Ajouter un commentaire Commentaires
NHenry
Messages postés
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022
161
17 mars 2016 à 19:23
Pourquoi ne pas avoir utiliser un SortedList ?
Car la méthode de tri est très artisanale.
Whismeril
Messages postés
17462
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 juin 2022
599 > NHenry
Messages postés
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022

17 mars 2016 à 19:58
Et pour les accents, il ne faut pas oublier, les cédilles, les tildes, brefs les signes diachroniques, voici une méthode qui les supprime tous
''' <summary>
		''' Methode qui supprime les accents et autres signes diacritiques, source http://www.developpez.net/forums/d286030/dotnet/langages/csharp/supprimer-accents-lettre/
		''' </summary>
		''' <param name="stIn"></param>
		''' <returns></returns>
		Private Function RemoveDiacritics(ByVal stIn As String) As String
			Dim stFormD As String = stIn.Normalize(NormalizationForm.FormD)
			Dim sb As New StringBuilder()

			For ich As Integer = 0 To stFormD.Length - 1
				Dim uc As UnicodeCategory = CharUnicodeInfo.GetUnicodeCategory(stFormD.Chars(ich))
				If uc <> UnicodeCategory.NonSpacingMark Then
					sb.Append(stFormD.Chars(ich))
				End If
			Next ich

			Return (sb.ToString().Normalize(NormalizationForm.FormC))
		End Function
Whismeril
Messages postés
17462
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
27 juin 2022
599 > NHenry
Messages postés
14941
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
20 juin 2022

17 mars 2016 à 19:53
Bonsoir ou une requête linq?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.