écrire une fonction

lillou1994 Messages postés 4 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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. lillou1994 Messages postés 4 Statut Membre
     
    Merci de m'aider si vous le pouvez ..
    0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    CCM n'a pas vocation de faire les devoirs ou exercices des étudiants(voir ici).

    0
  3. lillou1994 Messages postés 4 Statut Membre
     
    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 ?
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lillou1994 Messages postés 4 Statut Membre
     
    Merci beaucoup !!
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      De rien

      j'ai fait deux ou trois ajouts

      Bonne fin de journée
      0