Fonction d'addition de tableau avec report

Résolu/Fermé
viktor - 16 mai 2015 à 20:32
viktorfrankestein Messages postés 12 Date d'inscription samedi 16 mai 2015 Statut Membre Dernière intervention 30 août 2016 - 17 mai 2015 à 19:50
comment écrire une fonction qui additionne ou soustrait deux tableaux cellules par cellule. ensuite une fonction qui collecte les reports pour cette addition ou les distribue pour la soustraction sachant que le report est ce qu'on appelle au primaire la retenue. et biensur en langage c
A voir également:

1 réponse

Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 725
Modifié par Sugel le 16/05/2015 à 22:25
Il est aisé de satisfaire ta première requête, mais la seconde me laisse perplexe vis-à-vis de son utilité ; prenons un exemple:
16
 7+
--
12
10+
--
22

Au fond, la retenue de l'addition corresponds en C comme ailleurs à la somme des restes des divisions euclidienne par dix des membres (équivaut en C au modulo %), auquel on soustrait le reste de la division euclidienne par dix.

Toutefois, dans nos machines, les données sont traitées en binaire, c'est à dire que il n'existe pas dix chiffres (zero compris), mais seulement deux : 0 et 1.

Les retenues que font ta machine sont donc différentes des tiennes, et ces opérations sont purement 'artificielles'.

si tu tiens vraiment à avoir le 'reste' d'une addition, ça donne ça:
int a,b,reste;
a=7;
b=34;
reste = (a%10 + b%10); // 7%10 = 7 et 34%10 = 4, dont reste = 7+4=11
reste = (reste - reste%10)/10; // reste%10=1 et reste = 11, donc reste = 10/10 = 1


Pas terrible hein ?

Il faut encore nuancer cette réponse:
Une addition résulte de plusieurs retenues successives, et tu n'obtiens de cette manière que la première !

Tu peut obtenir les autres à l'aide d'une boucle qui parcours les différentes puissances de dix et utilise les retenues précédemment calculées.

Pour répondre à ta première question, on peut faire comme ça:
int i;
int tableau1[10];
int tableau2[10]; // on crée les deux tableaux, qui doivent être de même taille

// remplis ici tes tableaux avec des données

for (i=0;i<10;i++) // on parcours les cases des tableaux
  tableau1[i] -= tableau2[i]; // équivaut à tableau1[i] = tableau1[i] - tableau2[i] : on soustrait à chaque case du tableau 1 son homologue du second


Voilà tout !

PS: Fait attention à la présentation de ton message, tu n'a pas idée de la différence que cela fait, du plaisir que c'est de voir un message se terminant par une formule de politesse.
J'ai rédigé cette réponse avec plaisir, fais en sorte de rédiger ta question avec respect et politesse. Ce respect et cette estime est nécessaire à la survie de ces forums d'entraide, je ne serai pas là sans ces deux éléments.

------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
0
Utilisateur anonyme
16 mai 2015 à 23:34
Bonsoir
du plaisir que c'est de voir un message se terminant par une formule de politesse.
Ce qui est encore mieux, c'est un message Commençant Et Se Terminant, par une formule de politesse....
0
Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017 725
17 mai 2015 à 09:59
Merci de la précision Whismeril !
0
Utilisateur anonyme > Sugel Messages postés 4076 Date d'inscription jeudi 18 août 2011 Statut Membre Dernière intervention 19 juin 2017
17 mai 2015 à 14:02
Il va de soi que cette précision est à l'intention de viktor
0
viktorfrankestein Messages postés 12 Date d'inscription samedi 16 mai 2015 Statut Membre Dernière intervention 30 août 2016
17 mai 2015 à 19:50
Guten Abend. et merci pour les réponses et prochainement je ferai gaffe pour la politesse. Danke
0