Algorithme erreur à coriger

Fermé
M1raz0 Messages postés 37 Date d'inscription jeudi 28 octobre 2010 Statut Membre Dernière intervention 9 décembre 2011 - 9 déc. 2011 à 19:30
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 9 déc. 2011 à 21:53
Bonjour à tous,

Je suis encore dans mes études et j'ai deux exercices à faire qui sont deux algorithmes. J'ai commencé à faire le premier sur "Alg'Exec" mais lorsque je vérifie avec certaine donnée si il est correcte il me dit "Donnée non initialisé" à la ligne 58 ou 62..

Le but de cette algorithme est de calculer la prime d'un chauffeur selon le nombre d'accident, du nombre de kilomètres et de l'ancienneté.

Ça risque de vous paraitre tout bête mais je galère un peu sur les algorithme alors que j'ai des facilité su le SQL, bref je vais pas raconter ma vie..

Voilà je vous montre cette algorithme :

ALGO Prime

CONST
Seuil1Km=60000
Seuil2Km=100000
Prime1Km=0.004
Prime2Km=0.006
Anciennete1=2
Anciennete2=15
PrimeAn1=16
PrimeAn2=20
PrimeAn3=0
SeuilAccident1=3
SeuilAccident=1

VAR
NbAccident,Anciennete : entier
TotalPrime, PrimeAn, PrimeKm, NbKm : réel

DEBUT
Saisir "Combien d'année d'ancienneté ?", Anciennete
Saisir "Comien de kilomètres parcouru ?", NbKm
Saisir "Combien d'accident eu ?", NbAccident
Si Anciennete>Anciennete2
Alors
PrimeAn:=PrimeAn2
Sinon
Si Anciennete>Anciennete1
Alors
PrimeAn:=PrimeAn1
Sinon
Si Anciennete<=Anciennete1
Alors
PrimeAn:=PrimeAn3
FinSi
Finsi
FinSi
Si NbKm>Seuil2Km
Alors
PrimeKm:=Seuil2Km*Prime1Km+(Seuil2Km-NbKm)*Prime2Km
Sinon
Si NbKm>Seuil1Km
Alors
PrimeKm:=NbKm*Prime1Km
Sinon
Si NbKm<Seuil1Km
Alors
PrimeKm:=0
FinSi
FinSi
FinSi
Si NbAccident>SeuilAccident1
Alors
TotalPrime:=0
Sinon
Si NbAccident>=SeuilAccident
Alors
TotalPrime:=TotalPrime/NbAccident
Sinon
Si NbAccident<SeuilAccident1
Alors
TotalPrime:=TotalPrime
FinSi
FinSi
FinSi
Afficher " La prime est de : ", TotalPrime
Fin



Merci de votre avis !

2 réponses

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
9 déc. 2011 à 19:41
Avec ton message d'erreur "Donnée non initialisé" à la ligne 58 ou 62, c'est assez facile à corriger, il suffit de regarder le code sur ces deux lignes :

58:    TotalPrime:=TotalPrime/NbAccident
62:    TotalPrime:=TotalPrime

Il faut que tu donnes une valeur à TotalPrime, avant de l'utiliser dans un calcul.
0
M1raz0 Messages postés 37 Date d'inscription jeudi 28 octobre 2010 Statut Membre Dernière intervention 9 décembre 2011
Modifié par M1raz0 le 9/12/2011 à 21:30
Quand tu me dis donner une fonction à totalPrime, cela veut dire qu'il fallait que je le mette dans CONST et plus précissement TotalPrime=0 ?

Merci de ta réponse rapide
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
9 déc. 2011 à 21:53
Non ce serait faux de la mettre dans CONST vu que tu veux modifier sa valeur.
Ici le problème c'est que TotalPrime n'a aucune valeur, donc soit ce n'est pas TotalPrime qu'il faut mettre dans ce calcul, soit il y a un moment où tu as oublié de lui donner cette valeur.

C'est comme si tu demandait à ton ordinateur de calculer x+y en lui donnant y=2, bien évidemment la seule chose qu'il peut répondre c'est "mais que vaut x ?" or ici il n'en sait rien...
0