programme en C permettant efficacement de calculer les amortissements linéiares et dégressifs. Je pense aussi que le source n'est pas optimiser au maximum mais bon ...
Source / Exemple :
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
void titre(void);
int Datation (int j, int m, int a) ; //PROTOTYPE
main()
{
//Calcul de la base d'amortissement
float prix_HT;
float prix_TTC;
float frais_achat;
float TVA;
float duree_utilisation;
float Base_amortissement;
char select;
titre();
printf("- 'x' saisir un prix HT + frais d'achats\n\n");
printf("- 'c' saisir un prix TTC + le taux de TVA + frais d'achat\n");
printf("\nSaisie : ");
scanf("%c",&select);
while(select != 'x' && select != 'X' && select != 'C' && select != 'c')
{
system("cls");
printf("Erreur de saisie !\n");
printf("\nSaisie : ");
scanf("%c",&select);
};
system("cls");
if(select == 'x' || select == 'X')
{
printf("Saisir Montant HT : ");
scanf("%f",&prix_HT);
while(prix_HT <=0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("Saisir Montant HT : ");
scanf("%f",&prix_HT);
};
printf("Frais d'achat (0 si pas de frais d'achat): ");
scanf("%f",&frais_achat);
while(frais_achat < 0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("Frais d'achat (0 si pas de frais d'achat): ");
scanf("%f",&frais_achat);
};
Base_amortissement = prix_HT + frais_achat;
}else
if(select == 'c' || select =='C')
{
printf("Saisir Montant TTC : ");
scanf("%f",&prix_TTC);
while(prix_TTC <=0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("Saisir Montant TTC : ");
scanf("%f",&prix_TTC);
};
printf("Saisir Montant TVA (en poucentage ex : 19.6 pour 19.6 %%) : ");
//scanf("%f",&TVA);
cin >> TVA;
while(TVA <= 0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("Saisir Montant TVA : ");
cin >> TVA;
};
TVA = TVA/100;
prix_TTC = prix_TTC/(1+TVA);
printf("Frais d'achat (0 si pas de frais d'achat): ");
scanf("%f",&frais_achat);
while(frais_achat < 0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("Frais d'achat (0 si pas de frais d'achat): ");
scanf("%f",&frais_achat);
};
Base_amortissement = prix_TTC + frais_achat;
};
system("cls");
printf("- Saisir une dur%ce d'utilisation : 'x'\n\n- Saisir un taux lin%caire 'c'\n\n",130,130);
printf("Saisie : ");
cin >> select;
while(select != 'x' && select != 'X' && select != 'C' && select != 'c')
{
system("cls");
printf("Erreur de saisie !\n");
printf("\nSaisie : ");
cin >> select;
};
system("cls");
double tx_lin;
double tx_deg;
if (select == 'x' || select == 'X')
{
printf("Dur%ce d'utlisation (en ann%ces) : ",130,130);
scanf("%f",&duree_utilisation);
tx_lin = (100/(duree_utilisation));
};
if(select == 'c' || select == 'C')
{
printf("Saisir Taux lin%caire (en poucentage ex : 19.6 pour 19.6 %%) : ",130);
cin >> tx_lin;
while(tx_lin <= 0)
{
system("cls");
printf("Erreur de saisie !\n");
printf("\nResaisie du taux lin%caire : ",130);
cin >> tx_lin;
};
duree_utilisation = (float)(100/tx_lin);
int calcul = (duree_utilisation - (int)duree_utilisation)*10;
if (calcul < 5)
duree_utilisation = (int)duree_utilisation;
if (calcul >= 5)
duree_utilisation = (int)duree_utilisation++;
};
if(duree_utilisation <= 4)
tx_deg = tx_lin*1.25;
else
if(duree_utilisation <= 6)
tx_deg = tx_lin*1.75;
else
if(duree_utilisation > 6)
tx_deg = tx_lin*2.25;
system("cls");
//Ammortissement linéaire ou dégressif
printf("- 'x' pour un amortissement lin%caire\n\n- 'c' pour un amortissement d%cgressif\n",130,130);
printf("\nSaisie : ");
cin >> select;
while(select != 'x' && select != 'X' && select != 'C' && select != 'c')
{
system("cls");
printf("Erreur de saisie !\n");
printf("\nSaisie : ");
cin >> select;
};
system("cls");
//Amortissement linéaire
if(select == 'x' || select == 'X')
{
int j, m, a , n, n1; //5 variables locales pour cette fct exckusivement
printf("PRECISION : 13/01/1 et 16/03/1 sont deux dates de m%cme ann%ce \n 13/01/1 et 14/02/2 sont deux dates s%cpar%ces par une ann%ce\n",136,130,130,130,130);
printf ("\nEntrer date de mise en sercice (jj/mm/a) \nou date d'achat si date de mise en service inexistante: ",138); scanf ("%d/%d/%d", &j, &m, &a);
double nb_jour;
n = Datation (j, m, a); //APPEL DE LA FONCTION
n1 = n;
printf ("\nEntrer date d'inventaire (jj/mm/a) : ",138); scanf ("%d/%d/%d", &j, &m, &a);
n = (Datation (j, m, a)); //APPEL DE LA FONCTION
nb_jour = (n-n1);
system("cls");
double annuite_1 = Base_amortissement * (tx_lin/100) * (double)(nb_jour/360);
double annuite_n = Base_amortissement * (tx_lin/100);
double VNC = Base_amortissement - annuite_1;
int size = 1;
int num_an = 1;
printf("\n\nTableau d'amortissement : ");
printf("\n\n\nAnn%ce Base d'amortissement Taux Amortissement VNC\n",130);
printf(" %3d %3.2f %3.2f %3.2f %3.2f\n",num_an,Base_amortissement,tx_lin,annuite_1,VNC);
while (size < duree_utilisation)
{
VNC -= annuite_n;
num_an++;
printf(" %3d %3.2f %3.2f %3.2f %3.2f\n",num_an,Base_amortissement,tx_lin,annuite_n,VNC);
size++;
};
if(VNC != 0)
{
printf(" %3d %3.2f %3.2f %3.2f %3.2f\n",num_an+1,Base_amortissement,tx_lin,VNC,0);
};
};
//Amortissement dégéssif
if(select == 'c' || select == 'C')
{
int j, m, a , n, n1;
printf("PRECISION : 13/01/1 et 16/03/1 sont deux dates de m%cme ann%ce \n 13/01/1 et 14/02/2 sont deux dates s%cpar%ces par une ann%ce\n",136,130,130,130,130);
printf ("\nEntrer date d'achat (jj/mm/a) : ",138); scanf ("%d/%d/%d", &j, &m, &a);
double nb_jour;
double nb_mois;
n = Datation (j, m, a) ; //APPEL DE LA FONCTION
n1 = n;
printf ("\nEntrer date d'inventaire (jj/mm/a) : ",138); scanf ("%d/%d/%d", &j, &m, &a);
int J = j;
n = (Datation (j, m, a)); //APPEL DE LA FONCTION
nb_jour = n-n1;
nb_mois = (nb_jour/30);
/*if(J < 30)//le jour du deuxième mois
nb_mois++;*/
nb_mois = (int)nb_mois;
system("cls");
double annuite_1 = Base_amortissement * (tx_deg/100) * (double)(nb_mois/12);
double VNC = Base_amortissement - annuite_1;
int size = 1;
int num_an = 1;
printf("\n\nTableau d'amortissement : ");
printf("\n\n\nAnn%ce Base d'amortissement Taux Amortissement VNC\n",130);
printf(" %3d %3.2f %3.2f %3.2f %3.2f\n",num_an,Base_amortissement,tx_deg,annuite_1,VNC);
while (size < duree_utilisation)
{
if(size == duree_utilisation - 3)
{
if(tx_deg < 33.33)
tx_deg = 33.33;
};
if(size == duree_utilisation - 2)
tx_deg = (100/2);
if(size == duree_utilisation - 1)
tx_deg = 100;
double annuite_n = VNC * (tx_deg/100);
double VNC2 = VNC;
VNC2 -= annuite_n;
num_an++;
printf(" %3d %3.2f %3.2f %3.2f %3.2f\n",num_an,VNC,tx_deg,annuite_n,VNC2);
VNC=VNC2;
size++;
};
};
getch();
return 0;
};
int Datation (int j, int m, int a) //DEFINITION COMPLETE DE LA FONCTION
{
int n ; //variable locale pour cette fonction exclusivement
n = a*360 + m*30 + j;
return n;
};
void titre(void)
{
printf(" _______________________________________\n");
printf(" | __________________ |\n");
printf(" | | | |\n");
printf(" | | Amortissements | |\n");
printf(" | |__________________| |\n");
printf(" |_____________________________________|\n\n\n");
printf(" PAR LEONARD MAXIME\n\n\n");
};
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.