c'est un un programme qui calcule les différentes échéance de remboursement dun emprunt en fonction des point suivants :
Le montant de la somme emprunté.
La date de départ qui correspond à la date de disposition de la somme par lemprunteur.
La date de début du remboursement de lemprunt.
La durée de lemprunt, qui correspond à la différence entre la fin des remboursements et la date de début de lemprunt.
Le taux annuel demprunt .
La périodicité de remboursement de lemprunt (en général mensuel, bimestriel, trimestriel, semestriel ou annuel).
Le différé de remboursement du capital. Cest le temps séparent le remboursement du capital (hors intérêt) de la date de début des remboursements.
Le différé de remboursement des intérêts. Cest le temps séparent le remboursement des intérêts (hors capital) de la date de début des remboursements.
surtout n'hésitez pas aller sur mon site:
http://membres.lycos.fr/joefreddy
il y a des tutoriaux , des cahiers des charges de progiciels de gestion en C++
afin de se familiariser avec le développement (les classes MFC,...)
Bon courage!
Source / Exemple :
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<math.h>
class Emprunt{
public:
double somemprunt;
char date1[11];//date depart
char date2[11];//date debut
long date3;//diff fin et debut
double taux;//taux annuel emprunt
char periode[50];
long differecapitale;
long differeremboursement;
int periode_jours;
public :void etudeperiode();
};
void Emprunt::etudeperiode()
{ if (strcmp(periode,"mensuel")==0){periode_jours=30;}
else if(strcmp(periode,"bimestriel")==0){periode_jours=60;}
else if(strcmp(periode,"trimestriel")==0){periode_jours=90;}
else if(strcmp(periode,"semestriel")==0){periode_jours=180;}
else if(strcmp(periode,"annuel")==0){periode_jours=360;}
}
void nouvelledate2(char* source,int res)
{
int i;
int tab[12];
int res1,res2,res3;
//prenons comme reference une année non bissextile
tab[0]=31;tab[1]=29;tab[2]=31;tab[3]=30;tab[4]=31;
tab[5]=30;tab[6]=31;tab[7]=31;tab[8]=30;tab[9]=31;
tab[10]=30;tab[11]=31;
res1=((int)source[0]-(int)'0')*10+((int)source[1]-(int)'0');
res2=((int)source[3]-(int)'0')*10+((int)source[4]-(int)'0');
res3=((int)source[6]-(int)'0')*1000+((int)source[7]-(int)'0')*100+((int)source[8]-(int)'0')*10+((int)source[9]-(int)'0');
for(i=0;i<res/30;i++){
if(res1+30<tab[res2-1]){res1=res1+30;}
else if((res1+30>tab[res2-1])&&(res2<12)){res1=res1+30-tab[res2-1];res2++;}
else if((res1+30>tab[res2-1])&&(res2=12)){res1=res1+30-tab[res2-1];res2=1;res3++;}
}
if(res1+res%30<tab[res2-1]){res1=res1+(res%30);}
else if((res1+res%30>tab[res2-1])&&(res2<12)){res1=res1+(res%30)-tab[res2-1];res2++;}
else if((res1+res%30>tab[res2-1])&&(res2=12)){res1=res1+(res%30)-tab[res2-1];res2=1;res3++;}
source[0]=(char)((res1/10)+(int)'0');
source[1]=(char)((res1%10)+(int)'0');
source[3]=(char)((res2/10)+(int)'0');
source[4]=(char)((res2%10)+(int)'0');
source[6]=(char)((res3/1000)+(int)'0');
source[7]=(char)(((res3%1000)/100)+(int)'0');
source[8]=(char)((((res3%1000)%100)/10)+(int)'0');
source[9]=(char)((((res3%1000)%100))+(int)'0');
}
int difference2dates(char* source1,char* source2)
{
int resultat,anne;
int res1,res2,res3,res4,res5,res6;
res1=((int)source1[0]-(int)'0')*10+((int)source1[1]-(int)'0');
res2=((int)source1[3]-(int)'0')*10+((int)source1[4]-(int)'0');
res3=((int)source1[6]-(int)'0')*1000+((int)source1[7]-(int)'0')*100+((int)source1[8]-(int)'0')*10+((int)source1[9]-(int)'0');
res4=((int)source2[0]-(int)'0')*10+((int)source2[1]-(int)'0');
res5=((int)source2[3]-(int)'0')*10+((int)source2[4]-(int)'0');
res6=((int)source2[6]-(int)'0')*1000+((int)source2[7]-(int)'0')*100+((int)source2[8]-(int)'0')*10+((int)source2[9]-(int)'0');
if(res6==res3)
{
resultat=(abs(res5-res2))*30+abs(res1-res4);
}
else
{
anne=abs(res6-res3);
if((res2<=res5)&&(res1<=res4))//ok
{resultat=anne*360+(abs(res5-res2))*30+abs(res1-res4);}
else if((res2<=res5)&&(res1>res4))
{resultat=anne*360+(abs(res5-res2))*30-abs(res1-res4);}
else if((res2>res5)&&(res1<=res4))//ok
{resultat=anne*360-(abs(res5-res2))*30+abs(res1-res4);}
else if((res2>res5)&&(res1>res4))//ok
{resultat=anne*360-(abs(res5-res2))*30-abs(res1-res4);}
}
return resultat;
}
int nbrebourse,nbrebourse_par_an;
void main()
{
Emprunt essai;//création de l'objet;
double* mecheance;//tableau des echeances sa taille est celle du nombre d'echeance.
double* capitale;//tableau total echeance;
double* interet;
double* amortissement;
int i;double resultat2,resultat3,resultat4,somme;
//remplissage
printf("Entrez le montant de la somme emprunte? \n");
scanf("%lf",&essai.somemprunt);
printf("Entrez la date de depart (jj/mm/aaaa exple 01/01/2001)?\n");
scanf("%s",&essai.date1[0]);
printf("Entrez la date de debut du remboursement (jj/mm/aaaa exple: 06/01/2001) ?\n");
scanf("%s",&essai.date2[0]);
printf("Entrez la duree de l'emprunt en jour ?\n");
scanf("%d",&essai.date3);
printf("Veuillez saisir le taux annuel d'emprunt?\n");
scanf("%lf",&essai.taux);
printf("Entrez la periodicite de remboursement (mensuel,bimestriel,trimestriel,semestriel ou annuelle) ?\n");
scanf("%s",&essai.periode[0]);
printf("Entrez le differe de remboursement du capital en jour? \n");
scanf("%d",&essai.differecapitale);
printf("Entrez le differe de remboursement des interets en jour?\n");
scanf("%d",&essai.differeremboursement);
essai.etudeperiode();
//pour etre sur que les bonnes valeurs sont prises.
printf("*****reaffichage automatique des resultats pour etre sur de la saisie*****\n");
printf("%lf\n",essai.somemprunt);
printf("%s\n",essai.date1);
printf("%s\n",essai.date2);
printf("%d\n",essai.date3);
printf("%lf\n",essai.taux);
printf("%s\n",essai.periode);
printf("%d\n",essai.differecapitale);
printf("%d\n",essai.differeremboursement);
printf("la periode est de %d\n",essai.periode_jours);
//relatif au changement de la date debut remboursement.
if((essai.differecapitale!=0)&&(essai.differeremboursement!=0))
{
if(essai.differecapitale>=essai.differeremboursement)
{
nouvelledate2(&essai.date2[0],essai.differeremboursement);
}
else{nouvelledate2(&essai.date2[0],essai.differecapitale);}
}
//suite de traitement
printf("*****reaffichage automatique des resultats pour etre sur de la saisie*****\n");
printf("%lf\n",essai.somemprunt);
printf("%s\n",essai.date1);
printf("la nouvelle date est %s\n",essai.date2);
printf("%d\n",essai.date3);
printf("%lf\n",essai.taux);
printf("%s\n",essai.periode);
printf("%d\n",essai.differecapitale);
printf("%d\n",essai.differeremboursement);
printf("la periode est de %d\n",essai.periode_jours);
printf("la difference entre t2 et t1 est : %d\n",difference2dates(&essai.date1[0],&essai.date2[0]));
nbrebourse=(essai.date3-difference2dates(&essai.date1[0],&essai.date2[0]))/essai.periode_jours;
printf("le nombre de remboursement est de : %d\n",nbrebourse);
nbrebourse_par_an=365/essai.periode_jours;
printf("le nombre de remboursement par an est de %d\n",nbrebourse_par_an);
mecheance=new double[nbrebourse];
//remplissage du tableau echeancier
resultat4=(double)nbrebourse_par_an;
resultat3=(double)nbrebourse;
resultat2=1.0-pow((1.0+essai.taux/100/resultat4),-resultat3);
for(i=0;i<nbrebourse;i++)
{
if(essai.taux!=0){mecheance[i]=(essai.somemprunt*essai.taux/100/resultat4)/resultat2;}
else{mecheance[i]=essai.somemprunt/resultat4;}
}
printf("resultat4= %f\n",resultat4);
printf("resultat3=%f\n",resultat3);
printf("resultat2=%f\n",resultat2);
if(essai.differecapitale>essai.differeremboursement)
{
for(i=0;i<((essai.differecapitale-essai.differeremboursement)/essai.periode_jours);i++)
{
mecheance[i]=essai.somemprunt*essai.taux/100/resultat4;
}
}
capitale=new double[nbrebourse];
interet=new double[nbrebourse];
amortissement=new double[nbrebourse];
somme=0;
for(i=0;i<nbrebourse;i++)
{ capitale[i]=essai.somemprunt-somme;
interet[i]=capitale[i]*essai.taux/100/resultat4;
amortissement[i]=mecheance[i]-interet[i];
somme=somme+amortissement[i];
}
printf("le montant de l echeance capitale est de %f \n",mecheance[0]);
printf("le recapitulatif des resultats est le suivant:\n");
printf("\n*******capital******\n");
for(i=0;i<nbrebourse;i++)
{
printf("capital[%d]=%.2f\n",i,capitale[i]);
}
printf("\n*******interet******\n");
for(i=0;i<nbrebourse;i++)
{
printf("interet[%d]=%.2f\n",i,interet[i]);
}
printf("\n******* echeance totale ******\n");
for(i=0;i<nbrebourse;i++)
{
printf("mecheance[%d]=%.2f\n",i,mecheance[i]);
}
printf("\n******montant des amortissements*******\n");
for(i=0;i<nbrebourse;i++)
{
printf("amortissement[%d]=%.2f\n",i,amortissement[i]);
}
getchar();
getchar();
}
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.