Amortissement linéaire et dégressif en c par marik 7335

Soyez le premier à donner votre avis sur cette source.

Vue 15 907 fois - Téléchargée 363 fois

Description

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");
};

Codes Sources

A voir également

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.