Qu'entend tu par algorithme de ton code ?
Une fonction simplifier peut-être ?
Ceci ? :
private long OctToDec(long nOct)
{
long nDec = 0;
for (int i = 0; i < (nOct.ToString()).Length; i++)
{
int n = Convert.ToInt32((nOct.ToString()).Substring(i, 1));
nDec += (n * (int)System.Math.Pow(8, (nOct.ToString()).Length - i - 1));
}
return nDec;
}
Kenji
<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 27 févr. 2006 à 07:11
Salut, même si tu veux réécrire entièrement l'algo, c'est inutile de remplacer la fonction Pow, elle fait partie du langage, d'ailleurs dans certains langages c'est un opérateur.
Mais bon si vraiment tu veux la réécrire :
// Avec des entiers.
long Pow( long val, long pow )
{
long res = val;
while( --pow > 0 )
{
res *= val;
}
return res;
}
Et tu peux remplacer ça :
car = Longueur.Substring(Longueur1 - i,1);
carInt = Convert.ToInt16(car);
par :
int carInt = ( int )Longueur[ Longueur1 - i ] - 48; // Si Longueur contient des chiffres.
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 27 févr. 2006 à 09:58
Salut,
En reprenant la fonction Pow de Lutinore, ca doit donner quelque chose comme ca
<HR>
Fonction OctalVersDecimal (textValeur : chaine) : reel
Var Decimal, Longueur1, carInt, i : reel
Var Longueur, car : chaine
Debut
Longueur := chaine
Longueur1 := chaine.Length // Pas sur pour la notation algo
Decimal := 0
Pour i = 1 a Longueur1
car := Longueur[i - 1] // Pas sur pour la notation algo
CarInt := RetourneEntier(car) // Faire une fonction RetourneEntier
Decimal := Decimal + carInt * Pow(8, i-1)
Fin Pour
valret := Decimal
Fin
Fonction Pow (val : reel, pow : reel) : reel
var res : reel
Debut
res := val
tant que pow > 0
res := res * val
pow := pow - 1
fin tant que
valret := res
Fin
<HR>
Cependant, tout est relatif. Tu n'utilises peut etre pas la meme syntaxe, et il y a des choses qu'il faudra que tu vérifies. Par exemple :
Longueur1 := chaine.Lenghth
Pas sur qu'en notation algo, on puisse aller chercher les propriétés d'une chaine...
Enfin bon, voila, tu as un début, a toi de terminer ca a ta facon