De l'aide pour traduire un pseudo-code en C?

annamir Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
 loupius -
Bonjour,
je cherche une méthode qui permettre de représenter un entier quelque soit son nombre de chiffres en language C. Pour ce faire, j'utilise des tableaux d'entiers.

Un nombre u de n chiffres sera représenté par un... u2 u1 où chaque ui(u indice i) occupe le (i-1)ème élément du tableau. De même, un nombre v de m chiffres sera représenté par vm ... v2 v1 où chaque vi(v indice i) occupe le (i-1)ème élément du tableau.
j'ai reussi a faire le pseudo-code, mais je n'arrive pas a le traduire en C, j'ai besoin d'aide pour l'ecrire en C.

Voici un algorithme qui permet d'additionner ces deux nombres u et v (on suppose ici que n = m, si ce n'est pas le cas, on complète avec des zéros devant le nombre ayant le moins de chiffres) et d'obtenir ainsi un nombre w d'au plus n+1 chiffres représenté par w(n+1) wn ... w2 w1:
r<--0
pour i de 1 à n:
t<-- ui+vi+r
wi<-- tmod10
r<-- [(ui+vi+r)/10]
si r>0 alors wn+1<-- r
Voici un autre algorithme qui permet de multiplier un nombre u de n chiffres et un nombre v de m chiffres afin d'obtenir un nombre w d'au plus m+n chiffres:

pour i de 1 à n: wi<-- 0
pour j de 1 à m:
si vj<-- 0 alors wn+j<-- 0
sinon
r<--0
pour i de 1 à n:
t<-- ui*vj+w(i+j)+r
w(i+j)<-- tmod10
r<-- [t/10]
w(n+j)<-- r
finsi
merci.
A voir également:

1 réponse

loupius
 
Tu demandes la traduction du pseudo-code en C; je ne vérifie donc pas la véracité de ce code. Bien sûr je ne vais pas tout faire; je suppose que les initialisations sont réalisées (elles ne sont pas dans le pseudo-code présenté):
r<--0                 int r = 0;
pour i de 1 à n:      int i;
                      for (i=0; i<n; i++)
                      {
  t<-- ui+vi+r          t = u[i] + v[i] + r;
  wi<-- tmod10          w[i] = t % 10;
  r<-- [(ui+vi+r)/10]   r = t / 10;
  si r>0                if (r == 0)
    alors wn+1<-- r       w[i+1] = r
                      }
J'ai adapté la boucle de 0 à (n-1) car en C les indices des tableaux débutent à 0; toutefois ce n'est pas une obligation, on aurait pu aller de 1 à n, mais dans ce cas il faut déclarer les tableaux de taille 'n+1'.
Evidemment je te laisse tester cet exercice (il reste au moins une erreur grave dans la boucle (une erreur qui ne surviendra pas toujours mais qui peut faire planter le programme de manière apparemment aléatoire)) et faire le suivant.
Bon courage.
0