De l'aide pour traduire un pseudo-code en C?
annamir
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius -
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.
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:
- De l'aide pour traduire un pseudo-code en C?
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Comment traduire un site en français - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
1 réponse
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é):
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.
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.