Conversion octal à décimal, je ne sais pas comment écrire l'algorithme....

Acidkepler Messages postés 38 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 21 mars 2006 - 26 févr. 2006 à 20:58
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 27 févr. 2006 à 09:58
Ceci est le code en c# pour convertir la valeur octal en décimal...

int Decimal, Longueur1, carInt;



string Longueur;


Longueur = txtValeur.Text;


Longueur1 = Longueur.Length;



int i = 1;



string car;


Decimal = 0;



for(i=1 ; i <= Longueur1 ; i++)


{


car = Longueur.Substring(Longueur1 - i,1);


carInt = Convert.ToInt16(car);


Decimal= Decimal+ (
int)(carInt*Math.Pow(8,i-1));


}

J'aimerais écrire l'algorithme de ceci... je ne sais pas trop comment...
A voir également:

4 réponses

Utilisateur anonyme
26 févr. 2006 à 22:35
Salut,

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.
0
Acidkepler Messages postés 38 Date d'inscription vendredi 3 septembre 2004 Statut Membre Dernière intervention 21 mars 2006
26 févr. 2006 à 22:41
Exemple :


for(j=0; j<Longueur1; j++)


{



if (Longueur[j] == '8' || Longueur[j] == '9')


{


Valeur =
false;


}


}

cela donnera ceci en algo:

Pour j = 0; j< Longueur1; j++

Si Longueur[j] = '8' Ou Longueur[j] ='9'

Valeur = Faux

Donc je veux savoir comment faire ce que j'ai fais plus haut en algo comme dans mon exemple, sans utilisé de fonction math, etc.
à la main quoi!

Merci à l'avance
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
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



Mx
MVP C#
0
Rejoignez-nous