écrire une fonction

Bonjour, voila l''exercice que j'ai à programmer avec le langage visual basic.
Ecrire une fonction appelée "entier_chaine" qui permet de transformer un entier en chaine de caractères composées de chiffres. cette fonction aura un paramètre : l'entier et elle retourne la chaine correspondante ( cette fonction sera la programmation de la fonction str sur la bibliothèque) cette fonction doit tenir compte des valeurs négatives aussi.

5 réponses

  1. c'est bien pour ça que j'ai écrit "m'aider".
    J'ai la solution de l'exercice, je ne la comprends juste pas. J'espèrais avoir un peu d'aide ici.

    Mon problème est qu'a l'intérieur de la fonction on a :

    If n < 0 Then
    Do While n <> 0
    reste = Abs(n) Mod 10
    caractere = caractere + Chr(48 + reste)
    n = n \ 10
    Loop
    resultat = Chr(45) + StrReverse(caractere)
    Else
    Do While n <> 0
    reste = n Mod 10
    caractere = caractere + Chr(48 + reste)
    n = n \ 10
    Loop
    resultat = StrReverse(caractere)
    End If
    entier_chaine = resultat

    Pourquoi effectuer ces divisions et la chaine Chr ?
    1. Bonjour

      Ta fonction un peu simplifiée et expliquée

      Public Function EntierEnChaine(n As Long) As String
      Dim reste As Long, resultat As String, an As Long
      ' on va travailler sur la valeur absolue de n
      ' le signe sera traité à la fin
      an = Abs(n)
      ' initialisation de resultat
      resultat = ""
      Do
        ' reste = reste de la division de an par 10
        ' reste =  dernier chiffre de an (de 0 à 9)
        reste = an Mod 10
        ' chr(48) est le caractère de code ASCII 48 soit le caractère "0"
        ' ensuite 49 est le code de 1 etc ...
        resultat = Chr(48 + reste) + resultat
        ' an = quotient de an par 10
        ' an = la suite des chiffres de an sauf celui des unités
        an = an \ 10
      Loop Until an = 0
      ' renvoi du resultat avec traitement des négatifs
      If n < 0 Then
        EntierEnChaine = -resultat
      Else
        EntierEnChaine = resultat
      End If
      End Function


      RQ1.
      caractere = caractere + Chr(48 + reste)
      remplacé par
      resultat = Chr(48 + reste) + resultat
      va construire resultat dans le bon ordre (donc plus besoin de strreverse)

      RQ2. et pour le fun

      Public Function IntToStr(n As Long) As String
      If Abs(n) < 10 Then
        If n >= 0 Then
          IntToStr = Chr(48 + n)
        Else
          IntToStr = "-" & Chr(48 - n)
        End If
      Else
        IntToStr = IntToStr(n \ 10) & (Abs(n) Mod 10)
      End If
      End Function


      Bon courage pour tes études
      1. Merci beaucoup !!
        1. De rien

          j'ai fait deux ou trois ajouts

          Bonne fin de journée