Je suis débutant en C et je me suis lancé dans un programme de calcul automatique de prix avec marge :
- Le principe est que je veux appliquer une marge sur mes tarifs mais de façon dégressive; ainsi la marge doit être plus importante pour un tarif bas et moins importante pour un tarif haut. Pour l'instant j'ai choisi de procéder comme ceci pour le calcul :
Cette façon de faire me pose un problème : il y a un décalage important entre chaque tranche ; si je réduis l'écart entre les tranches, je risque de faire une forêt de ifs.
On m'a conseillé de créer une fonction affine mais je n'ai aucune idée de comment la traduire en C. Je cherche donc un moyen de le faire, ou, le cas échéant, un moyen de solutionner ce problème d'une autre manière.
Je vous remercie d'avance !
- Edité par AugustinDebureaux 13 août 2019 à 9:40:33
L'utilisation de tables à son charme (et son intérêt, notamment de pouvoir charger les coefficients depuis un fichier), mais pour éliminer la forêt de if, il y a une solution, l'utilisation de l'expression conditionnelle "ternaire".
L'avantage, c'est la lisibilité : même le stagiaire de la compta peut vérifier que ce bout de code correspond au barême qui est sur un papier.
---
Pour l'utilisation d'un tableau de coefficients par tranche, attention, elles n'ont pas la même largeur : 50 pour les 4 premières, 100 pour les suivantes.
Une idée est de dire qu'une tranche de 100, c'est deux tranches de 50. Ce qui donne les coefficients
Merci michelbillaud, c'est très clair, je comprend beaucoup mieux grâce à tes explications !
Un seul point sur lequel je voudrais revenir : je voulais au départ que chaque 'prixBase' ait sont 'tauxMarge' à lui, de sorte que l'on ait pas de gros décalage entre les tranches. Enfaite le 'prixBase' correspond à mon prix d'achat et le 'prixMarge' à mon prix de vente, donc un client ne devrait pas payer moins cher pour un produit que j'achète plus cher.
Je m'explique :
- Un 'prixBase' à 599 euros aura un 'tauxMarge' à 0.75 soit 599 / 0.75 = 798 euros
- Un 'prixBase' à 601 euros aura un 'tauxMarge' à 0.80 soit 601 / 0.80 = 751 euros
Dans le bout de code que j'ai posté un peu plus haut, j'ai tenté de régler ce problème en mettant des taux de marge avec de gros écarts au début et puis de plus en plus serrés.
michelbillaud a écrit:
L'utilisation de tables à son charme (et son intérêt, notamment de pouvoir charger les coefficients depuis un fichier), mais pour éliminer la forêt de if, il y a une solution, l'utilisation de l'expression conditionnelle "ternaire".
L'avantage, c'est la lisibilité : même le stagiaire de la compta peut vérifier que ce bout de code correspond au barême qui est sur un papier.
---
Pour l'utilisation d'un tableau de coefficients par tranche, attention, elles n'ont pas la même largeur : 50 pour les 4 premières, 100 pour les suivantes.
Une idée est de dire qu'une tranche de 100, c'est deux tranches de 50. Ce qui donne les coefficients
Merci michelbillaud, c'est très clair, je comprend beaucoup mieux grâce à tes explications !
Un seul point sur lequel je voudrais revenir : je voulais au départ que chaque 'prixBase' ait sont 'tauxMarge' à lui, de sorte que l'on ait pas de gros décalage entre les tranches. Enfaite le 'prixBase' correspond à mon prix d'achat et le 'prixMarge' à mon prix de vente, donc un client ne devrait pas payer moins cher pour un produit que j'achète plus cher.
Je m'explique :
- Un 'prixBase' à 599 euros aura un 'tauxMarge' à 0.75 soit 599 / 0.75 = 798 euros
- Un 'prixBase' à 601 euros aura un 'tauxMarge' à 0.80 soit 601 / 0.80 = 751 euros
Dans le bout de code que j'ai posté un peu plus haut, j'ai tenté de régler ce problème en mettant des taux de marge avec de gros écarts au début et puis de plus en plus serrés.
Dans ce cas c'est une autre histoire. De la façon dont c'était posé, c'était un problème de programmation à partir d'un système de barême donné.
En fait c'est une histoire de définition du système de barême, de façon à avoir une fonction PrixBase/PrixMarge continue, et décroissante.
C'est effectivement une histoire de droite affine par morceaux. Ca revient aux taux marginaux des tranches d'imposition : le taux d'une tranche s'applique à ce qui dépasse la valeur de début de tranche.
Calcul de prix
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Bonhomme !! | Jeu de plateforme : Prototype.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent