Voilà mon code, c'est un petit programme que j'ai fais pour m'exercer.
Le programme charge un nombre dans tab1 à partir d'un fichier. Chaque chiffre est stocké dans une ligne du tableau. Ensuite le programme retourne tab1 et met tout ça dans tab2. Enfin le programme additionne tab1 et tab2 et met le résultat dans tab3.
Ma méthode est la suivante, n'hésitez surtout pas à me dire ce qui est pas propre et pas optimale.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include <stdio.h>
#include <stdlib.h>
int tab1[1000000];
int tab2[1000000];
int tab3[1000000];
int *ptr_tab1 = &tab1[0];
int taille; // taille de tab1
void inverse(int *ptr)
{
int i;
for(i = 0; i < taille;i++)
{
tab2[i] = ptr[taille-1-i];
}
}
void format()
{
int i;
for (i = 0; i < taille+1; i++)
{
tab3[i] = tab3[i+1];
}
}
void addition (int * ptr)
{
int report = 0;
int resultat = 0;
int i;
for (i = taille; i >= 0; i--)
{
resultat = ptr[i] + tab2[i] + report ;
report = resultat / 10;
tab3[i+1] = resultat % 10;
}
tab3[0] = report;
if (tab3[0] == 0)
{
format();
}
else
{
taille++;
}
}
int main()
{
chargement()// charge un nombre dans tab1 a patir d'un fichier. Chaque chiffre est stocke dans une ligne du tableau. La variable "taille" est modifiée en consequence
int i;
for (a = 0; a < 100000; a++)
{
inverse(ptr_tab1);
addition(ptr_tab1);
ptr_tab1 = &tab3[0];
}
return 0;
} |
Merci beaucoup !
Partager