Section courante

A propos

Section administrative du site

Selon le professeur du département d'informatique du Cégep de Momo, François Leroux, un des algorithmes de base permettant une compréhension universel de la programmation pour un débutant, peu importe son origine, sa classe social ou sa culture, est sans nulle doute les taxes !

De plus, le Canada est sans doute l'un des pays ou les taxes de vente sur les produits et services sont les plus compliqués à appliquer. Et pour cause : Elle varie d'une province ou territoire à l'autre, elle est parfois composé ou séparé. Voici leur représentation en date du mois de septembre de l'années 2006 :

Province/Territoire Taxe 1 Taxe 2 Taux
Alberta TVH: 6% Aucune 6%
Colombie-Britannique TVH: 6% TVP: 7% 13%
Ile-du-Prince-Édouard TPS: 6% TVP: 10% 16.6%
Manitoba TPS: 6% TVP: 7% 13%
Nouveau-Brunswick TVH: 14% Aucune 14%
Nouvelle-Écosse TVH: 14% Aucune 14%
Nunavut TVH: 6% Aucune 6%
Ontario TPS: 6% TVP: 8% 14%
Québec TPS: 6% TVQ: 7.5% 13.95%
Saskatchewan TPS: 6% TVP: 7% 13%
Terre-Neuve/Labrador TVH: 14% Aucune 14%
Territoire du Nord Ouest TVH: 6% Aucune 6%
Territoire du Yukon TVH: 6% Aucune 6%

Tout d'abord, voici un premier exemple permettant d'afficher des données complètes sur les taxes en C++ :

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.   char Compute[]={'C','C','C','C','S','C','S','S','S','S','C','S','S'};
  8.   char * TaxName1[]={"TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"};
  9.   double TaxRate1[]={6.0000,14.0000,14.0000,14.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000};
  10.   char * TaxName2[]={"TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""};
  11.   double TaxRate2[]={7.5000,0.0000,0.0000,0.0000,7.0000,0.0000,7.0000,0.0000,0.0000,8.0000,10.0000,7.0000,0.0000};
  12.   char * RegionMID[]={"QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"};
  13.   char * RegionName_EN[]={"Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"};
  14.   char * RegionName_FR[]={"Québec","Nouvelle-Écosse","Nouveau-Brunswick","Terre-Neuve/Labrador","Colombie-Britanique","Alberta","Manitoba","Territoire du Nord Ouest","Nunavut","Ontario","Ile-du-Prince-Édouard","Saskatchewan","Territoire du Yukon"};
  15.   char Tmp[255];
  16.  
  17.   std::cout << "Nom de la province/territoire MID Taxe 1 Taxe 2 Taux" << std::endl;
  18.   for(int I=0;I<13;I++) {
  19.        printf("%-30s",RegionName_FR[I]);
  20.        printf("%-4s",RegionMID[I]);
  21.        strcpy(Tmp,TaxName1[I]);
  22.        strcat(Tmp,":");
  23.        sprintf(Tmp,"%.1f%%",TaxRate1[I]);
  24.        printf("%-7s",Tmp);
  25.        if(TaxName2[I]=="") {
  26.              printf("%7s","");
  27.        } else {
  28.              strcpy(Tmp,TaxName2[I]);
  29.              strcat(Tmp,":");
  30.              sprintf(Tmp,"%.1f%%",TaxRate2[I]);
  31.              printf("%-7s",Tmp);
  32.        }
  33.        switch(Compute[I]) {
  34.             case 'S': //Séparé
  35.                  printf("%.1f%%\t",TaxRate1[I]+TaxRate2[I]);
  36.                  break;
  37.             case 'C': //Composé
  38.                  printf("%.1f%%\t",TaxRate1[I]+((TaxRate2[I]*(100+TaxRate1[I]))/100));
  39.                  break;
  40.        }
  41.         std::cout << std::endl;
  42.   }
  43.   return 0;
  44. }

on obtiendra le résultat suivant :

Nom de la province/territoire MID Taxe 1 Taxe 2 Taux
Québec QC TPS:6% TVQ:7.5% 13.95%
Nouvelle-Écosse NS TVH:14%   14%
Nouveau-Brunswick NB TVH:14%   14%
Terre-Neuve/Labrador NF TVH:14%   14%
Colombie-Britanique BC TPS:6% TVP:7% 13%
Alberta AB TVH:6%   6%
Manitoba MB TPS:6% TVP:7% 13%
Territoire du Nord Ouest NT TVH:6%   6%
Nunavut NU TVH:6%   6%
Ontario ON TPS:6% TVP:8% 14%
Ile-du-Prince-Édouard PE TPS:6% TVP:10% 16.6%
Saskatchewan SK TPS:6% TVP:7% 13%
Territoire du Yukon YT TVH:6%   6%

Ensuite, voici un deuxième exemple permettant de calculer la taxe de vente d'un produit ou service en fonction des provinces ou territoires en C++ :

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.      char Compute[]={'C','C','C','C','S','C','S','S','S','S','C','S','S'};
  8.      char * TaxName1[]={"TPS","TVH","TVH","TVH","TPS","TVH","TPS","TVH","TVH","TPS","TPS","TPS","TVH"};
  9.      double TaxRate1[]={6.0000,14.0000,14.0000,14.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000,6.0000};
  10.      char * TaxName2[]={"TVQ","","","","TVP","","TVP","","","TVP","TVP","TVP",""};
  11.      double TaxRate2[]={7.5000,0.0000,0.0000,0.0000,7.0000,0.0000,7.0000,0.0000,0.0000,8.0000,10.0000,7.0000,0.0000};
  12.      char * RegionMID[]={"QC","NS","NB","NF","BC","AB","MB","NT","NU","ON","PE","SK","YT"};
  13.      char * RegionName_EN[]={"Quebec","Nova Scotia","New Brunswick","Newfoundland","British Columbia","Alberta","Manitoba","Northwest Territories","Nunavut","Ontario","Prince Edward Island","Saskatchewan","Yukon Territory"};
  14.      char * RegionName_FR[]={"Québec","Nouvelle-Écosse","Nouveau-Brunswick","Terre-Neuve/Labrador","Colombie-Britanique","Alberta","Manitoba","Territoire du Nord Ouest","Nunavut","Ontario","Ile-du-Prince-Édouard","Saskatchewan","Territoire du Yukon"};
  15.      char Tmp[255];
  16.  
  17.      std::cout << "Nom de la province/territoire Taxe 1 Taxe 2 Taux 1$\t15$\t44,95$\t100$" << std::endl;
  18.      for(int I=0;I<13;I++) {
  19.         double Tax = 0;
  20.         printf("%-30s",RegionName_FR[I]);
  21.         strcpy(Tmp,TaxName1[I]);
  22.         strcat(Tmp,":");
  23.         sprintf(Tmp,"%.1f%%",TaxRate1[I]);
  24.         printf("%-7s",Tmp);
  25.         if(TaxName2[I]=="") {
  26.             printf("%7s","");
  27.         } else {
  28.              strcpy(Tmp,TaxName2[I]);
  29.            strcat(Tmp,":");
  30.            sprintf(Tmp,"%.1f%%",TaxRate2[I]);
  31.            printf("%-7s",Tmp);
  32.           }
  33.         switch(Compute[I]) {
  34.                case 'S': //Séparé
  35.                            Tax = TaxRate1[I]+TaxRate2[I];
  36.                      break;
  37.                case 'C': //Composé
  38.                            Tax = TaxRate1[I]+((TaxRate2[I]*(100+TaxRate1[I]))/100);
  39.                      break;
  40.         }
  41.         strcpy(Tmp,"");
  42.         sprintf(Tmp,"%.1f%%",Tax);
  43.         printf("%-6s",Tmp);
  44.         printf("%.2f$\t",1*(1+(Tax/100)));
  45.         printf("%.2f$\t",15*(1+(Tax/100)));
  46.         printf("%.2f$\t",44.95*(1+(Tax/100)));
  47.         printf("%.2f$\t",100*(1+(Tax/100)));
  48.         std::cout << std::endl;
  49.      }
  50.      return 0;
  51. }

on obtiendra le résultat suivant :

Nom de la province/territoire Taxe 1 Taxe 2 Taux 1$ 15$ 44,95$ 100$
Québec TPS:6% TVQ:7.5% 13.95% 1.1395$ 17.0925$ 51.220525$ 113.95$
Nouvelle-Écosse TVH:14%   14% 1.14$ 17.1$ 51.243$ 114$
Nouveau-Brunswick TVH:14%   14% 1.14$ 17.1$ 51.243$ 114$
Terre-Neuve/Labrador TVH:14%   14% 1.14$ 17.1$ 51.243$ 114$
Colombie-Britanique TPS:6% TVP:7% 13% 1.13$ 16.95$ 50.7935$ 113$
Alberta TVH:6%   6% 1.06$ 15.9$ 47.647$ 106$
Manitoba TPS:6% TVP:7% 13% 1.13$ 16.95$ 50.7935$ 113$
Territoire du Nord Ouest TVH:6%   6% 1.06$ 15.9$ 47.647$ 106$
Nunavut TVH:6%   6% 1.06$ 15.9$ 47.647$ 106$
Ontario TPS:6% TVP:8% 14% 1.14$ 17.1$ 51.243$ 114$
Ile-du-Prince-Édouard TPS:6% TVP:10% 16.6% 1.166$ 17.49$ 52.4117$ 116.6$
Saskatchewan TPS:6% TVP:7% 13% 1.13$ 16.95$ 50.7935$ 113$
Territoire du Yukon TVH:6%   6% 1.06$ 15.9$ 47.647$ 106$


Dernière mise à jour : Mardi, le 24 novembre 2015