begin process at 2012 02 16 19:10:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

J'AI BESOIN D'AIDE !!!! :)

 > 

Identification de caracteres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Identification de caracteres

mardi 5 juillet 2005 à 10:26:55 | Identification de caracteres

Julien39

Membre Club Administrateur CodeS-SourceS
Je voudrais faire un programme en VB qui met sous forme fractionnaire les nombres à écriture décimale infinie ( exemple 0.35353535....=35/99 ).
 
Il ne me manque plus que deux elements c'est de savoir comment avec un nombre je peux identifier le cycle que présente l'écriture décimale (ici 35, on observe une successin de 35dans l'écriture).

Et comment trouver que le nombre chiffres composant ce cycle ( ici 2 , car 35 est composé de  2 chiffres)

J'espere avoir été assez précis et compréhenssible

D'avance merci.
mardi 5 juillet 2005 à 12:13:04 | Re : Identification de caracteres

Gobillot

je doûte qu'on puisse faire cela
je citerais en exemple les décimales de Pi,
après quelques 2 milliards de décimales calculées, personne n'a encore prouvé qu'il y avait ou pas de séquences répétitives.
les nombres garderont toujours leurs mystères.

Daniel
mardi 5 juillet 2005 à 12:33:01 | Re : Identification de caracteres

Julien39

Membre Club Administrateur CodeS-SourceS
Ecrire un nombre a écriture décimale infini et CYCLIQUE est possible comme pour 0.35353535=35/99

Demonstration

Soit n = 0.569569569569....
On remarque un cycle 569...
1000n = 569.569569...
1000n = 569 + 0.569569...
1000n = 569 + n
1000n - n =569
999n = 569
n = 569/999

Donc 0.569569569...=569/999

Pour pi c'est différent, on observe pas de cycle dans son écriture on ne peut donc pas l'écrire sous forme fractionnaire.
mardi 5 juillet 2005 à 16:12:40 | Re : Identification de caracteres

phil23

Réponse acceptée !

'J'ai fais cet exemple en VB6 qui pourrait fonctionner.
'Colle cette fonction dans un form pour tester.


Private Sub RechercheSuite()

Dim ValeurTest As Double  'Variable qui contient la valeur à tester
Dim ValeurTemp As Single  'Variable temporaire pour déterminer le séparateur
                          'numérique du système (point ou virgule)
Dim sSep As String        'Séparateur numérique du système
Dim lPos As Long          'Position du séparateur dans la variable ValeurTest
Dim sDecimale As String   'Partie décimale de la valeur à tester
Dim i As Long             'Compteur de la boucle 1
Dim j As Long             'Compteur de la boucle 2
Dim sBloc As String       'Bloc de chiffre à comparer
Dim sExtrait As String    'Bloc suivant à comparer avec sBloc
Dim bIdentique As Boolean 'Est-ce que la comparaison est identique ?
Dim lCompteur As Long     'Compte le nombre de comparaison

    'Mettre ici la valeur à tester
    '---------------------------------------------
    ValeurTest = (35 / 99)         'Résultat: 35      2
    'ValeurTest = (569 / 999)       'Résultat: 569     3
    'ValeurTest = 0.333333343333333 'Résultat: 3       1
    'ValeurTest = 0.123456123456    'Résultat: 123456  6
    'ValeurTest = 0.375962451655     'Résultat: Impossible de trouver une suite
    '---------------------------------------------
   
    'Détermine quel est le séparateur numérique du système
    '---------------------------------------------
    ValeurTemp = (1 / 10)
    sSep = Mid(CStr(ValeurTemp), 2, 1)
    '---------------------------------------------
   
    'Recherche la position du séparateur numérique
    lPos = InStr(1, CStr(ValeurTest), sSep)
    If lPos > 0 Then
        'Extrait que la partie décimale
        sDecimale = Mid(CStr(ValeurTest), lPos + 1)
       
        'Fait une boucle du nombre de chiffre
        For i = 1 To Len(sDecimale)
            sBloc = Left(sDecimale, i)
           
            lCompteur = 0
            bIdentique = True
            'Compare par bloc avec la suite pour déterminer si c'est identique
            For j = (i + 1) To Len(sDecimale) Step i
                sExtrait = Mid(sDecimale, j, i)
                If Len(sExtrait) = Len(sBloc) Then
                    lCompteur = lCompteur + 1
                    If sBloc <> Mid(sDecimale, j, i) Then bIdentique = False
                End If
                If bIdentique = False Then Exit For
            Next j
            If lCompteur = 0 Then bIdentique = False
           
            If bIdentique = True Then Exit For
        Next i
       
        If bIdentique = True Then
            MsgBox "La suite de chiffre est: " & sBloc & vbCrLf & _
                   "Le nombre de chiffres composant est: " & Len(sBloc), vbInformation
        Else
            MsgBox "Impossible de déterminer une suite logique.", vbExclamation
        End If
       
    Else
        MsgBox "C'est un nombre entier. Il n'y a pas de séparateur.", vbExclamation
    End If
   
End Sub

mardi 5 juillet 2005 à 16:52:26 | Re : Identification de caracteres

Julien39

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Je ne comprends pas comment utiliser cette fonction
mardi 5 juillet 2005 à 17:53:56 | Re : Identification de caracteres

Gobillot

Réponse acceptée !
si c'est une suite de chiffres limités forcément c'est plus facile,
j'ai pas dit que c'était facile, mais ça donne pas le résultat exact à savoir si c'est un nombre rationnel ou pas.

un nombre rationnel peut se mettre se mettre sous forme de fraction.
soit c'est un nombre entier comme 10/2
soit c'est un nombre avec décimale limitée comme 6/5
soit c'est un nombre avec décimale illimitée comme 1/3 mais avec séquence répétitive.

pour les nombres irrationnels, on ne peut pas les mettre sous forme de fraction, le nombre de décimale est illimitée, et on peut considérer qu'il n'y a pas de séquence répétitive, mais je suis pas sûr que ça a été prouvé ?

conclusion:
si on arrive a le mettre sous forme de fraction et si c'est pas un nombre entier et si le nombre de décimales est illimité là on est sûr qu'il y a une séquence répétive.
il reste plus qu'à la trouver.


Daniel
mardi 5 juillet 2005 à 21:48:26 | Re : Identification de caracteres

phil23

Réponse acceptée !

OK, je ne savais pas que tu es débutant.
Mon exemple est fait avec VB6. Je ne sais même pas si tu as aussi cette version ou VB.net ou quoi?

Si tu as VB6 tu peux:
1. Ouvrir un nouveau projet
2. Ajouter un bouton "Command1" sur le "Form1"
3. Ouvre la fenêtre code du Form1
4. Efface tout le code (si il y a quelque chose)
5. Copier le code ci-dessous et le coller dans le Form1
6. Exécuter le projet et cliquer sur le bouton pour tester



' Code à copier et coller
'----------------------------------
Option Explicit

Private Sub RechercheSuite(ByVal MonNombre As String)

Dim ValeurTemp As Single  'Variable temporaire pour déterminer le séparateur
                          'numérique du système (point ou virgule)
Dim sSep As String        'Séparateur numérique du système
Dim lPos As Long          'Position du séparateur dans la variable ValeurTest
Dim sDecimale As String   'Partie décimale de la valeur à tester
Dim i As Long             'Compteur de la boucle 1
Dim j As Long             'Compteur de la boucle 2
Dim sBloc As String       'Bloc de chiffre à comparer
Dim sExtrait As String    'Bloc suivant à comparer avec sBloc
Dim bIdentique As Boolean 'Est-ce que la comparaison est identique ?
Dim lCompteur As Long     'Compte le nombre de comparaison

    'Détermine quel est le séparateur numérique du système
    '---------------------------------------------
    ValeurTemp = (1 / 10)
    sSep = Mid(CStr(ValeurTemp), 2, 1)
    '---------------------------------------------
   
    'Recherche la position du séparateur numérique
    lPos = InStr(1, CStr(MonNombre), sSep)
    If lPos > 0 Then
        'Extrait que la partie décimale
        sDecimale = Mid(CStr(MonNombre), lPos + 1)
       
        'Fait une boucle du nombre de chiffre
        For i = 1 To Len(sDecimale)
            sBloc = Left(sDecimale, i)
           
            lCompteur = 0
            bIdentique = True
            'Compare par bloc avec la suite pour déterminer si c'est identique
            For j = (i + 1) To Len(sDecimale) Step i
                sExtrait = Mid(sDecimale, j, i)
                If Len(sExtrait) = Len(sBloc) Then
                    lCompteur = lCompteur + 1
                    If sBloc <> Mid(sDecimale, j, i) Then bIdentique = False
                End If
                If bIdentique = False Then Exit For
            Next j
            If lCompteur = 0 Then bIdentique = False
           
            If bIdentique = True Then Exit For
        Next i
       
        If bIdentique = True Then
            MsgBox "La suite de chiffre est: " & sBloc & vbCrLf & _
                   "Le nombre de chiffres composant est: " & Len(sBloc), vbInformation
        Else
            MsgBox "Impossible de déterminer une suite logique.", vbExclamation
        End If
       
    Else
        MsgBox "C'est un nombre entier. Il n'y a pas de séparateur.", vbExclamation
    End If
   
End Sub

Private Sub Command1_Click()
   
    Call RechercheSuite(InputBox("Entrer le chiffre à tester:", "Chiffre", "0.35353535353535353535"))
   
End Sub

mardi 5 juillet 2005 à 22:31:25 | Re : Identification de caracteres

Julien39

Membre Club Administrateur CodeS-SourceS
Merci d'avoir passé du temps à trouver une répose et a me l'expliquer aussi clairement


Cette discussion est classée dans : nombre, caracteres, identification, écriture, décimale


Répondre à ce message

Sujets en rapport avec ce message

Identification de caracteres [ par CwamM ] Salut a tous,Jdébute en VB depuis hier et je cherche a lire un fichier qui a cette tete:$ attention commande nouvelle et titre entre quotesCOOR    1   Conversion chaine de caracteres en un nombre entier [ par tntdavid ] Je voudrais connaitre le code VB d'une fonction qui me permettrait de convertir une chaine de 6 caractères en un nombre entier.Merci d'avance de l'att Compte le nombre de caracteres d'1 chaine [ par pimousse75 ] Salut,je voudrais compter le nombre de _ d'une chaine. Y'a t il une fonction toute faite, ou dois-je la creer (c'est tres simple je sais !!!) ? A+ chercher une chaine dans un fichier apres une chaine et un nombre de caracteres [ par rober ] RoberBonjour,apres avoir charger un fichier Je voudrais trouver une chaine de caracteres se trouvant apres une chaine et un certain nombre de caracter Taille fichier en nombre de caracteres [ par totoalareunion ] Bonjour a tous,Je cherche a compter le nombre de caracteres ds un fichier .txt. Avec Access 2000, en VBA.  Et je ne trouve pas....Merci d'avanceThomas Calculateur de PI avec le nombre de décimale paramétrable [ par bizmoute ] Bonjour, ce que je veux dire, c'est que j'aurais besoin d'aide pour faire un prog qui calculerait le plus de décimale de PI possible et ce, en le moin écriture d'un nombre d'autre façon [ par zine pef ] bomjour; quelqu'un m'aider d'un code en VB6 d'écrire le nombre:124=(1*100)+(2*10)+(4*1) merçi; limiter le nombre de caracteres dans un combobox [ par itsha ] BonjourDans un controle ComboBox en saisie, j'aimerais que l'utilisateur ne puisse pas entrer plus qu'un certain nombre de caractères ( par exemple fo Nombre de ligne et de caracteres ds un fichier txt [ par jff27 ] Bonjour,Comment fait-on pour connaitre le nombre de caracteres et le nombre de ligne qu'il y'a dans un fichierD'avance merci. conversion de caracteres dans une string (help please) [ par andrea ] Bonjour,je voudrais savoir comment faire pour changer (remplacer) des caracteres dans une string par exemple lorsque je trouve un quote (') dans une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,944 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales