écrire une fonction
lillou1994
Messages postés
4
Statut
Membre
-
ccm81 Messages postés 11033 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.
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:
- écrire une fonction
- Fonction si et - Guide
- Ecrire en gras sur whatsapp - Guide
- Comment écrire # sur pc - Guide
- Écrire en majuscule - Guide
- Ecrire en miroir - Guide
5 réponses
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 ?
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 ?
Bonjour
Ta fonction un peu simplifiée et expliquée
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
Bon courage pour tes études
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question