écrire une fonction

Fermé
lillou1994 Messages postés 4 Date d'inscription samedi 25 janvier 2014 Statut Membre Dernière intervention 25 janvier 2014 - 25 janv. 2014 à 13:44
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 - 25 janv. 2014 à 16:43
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.
A voir également:

5 réponses

lillou1994 Messages postés 4 Date d'inscription samedi 25 janvier 2014 Statut Membre Dernière intervention 25 janvier 2014
25 janv. 2014 à 13:44
Merci de m'aider si vous le pouvez ..
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
25 janv. 2014 à 14:45
Bonjour,

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


0
lillou1994 Messages postés 4 Date d'inscription samedi 25 janvier 2014 Statut Membre Dernière intervention 25 janvier 2014
25 janv. 2014 à 15:20
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
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
Modifié par ccm81 le 25/01/2014 à 16:39
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lillou1994 Messages postés 4 Date d'inscription samedi 25 janvier 2014 Statut Membre Dernière intervention 25 janvier 2014
25 janv. 2014 à 16:41
Merci beaucoup !!
0
ccm81 Messages postés 10855 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 29 avril 2024 2 404
25 janv. 2014 à 16:43
De rien

j'ai fait deux ou trois ajouts

Bonne fin de journée
0