Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Identification de caracteres [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (Julien39)

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

Julien39

Membre Club
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
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
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
Merci d'avoir passé du temps à trouver une répose et a me l'expliquer aussi clairement



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


Répondre à ce message

Sujets en rapport avec ce message

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 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   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 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 Nombre d'enrégistrements d'une table Access97 [ par DAV ] salut,Je voudrais tout simplement savoir, le nombres d'enrégistrements maximum qu'une table Access97 peut contenir.Merci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.