France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 347 membres enregistrés - 1 873 060 posts - 95 167 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages Web
                [AIDE] besoin d'aide pour réaliser un algorithme
33 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[AIDE] besoin d'aide pour réaliser un algorithme

quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 15 janvier 2008 - 21 h 22 m 14 s
Bonjour à tous,
je suis en BTS IG, et j'aurai besoin de votre aide pour réaliser l'algorithme suivant : http://tosweb.free.fr/algo.pdf

J'ai du mal a comprendre les constantes, et le fonctionnement des tableaux.
Merci bcp pour votre aide :)




Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 16 janvier 2008 - 04 h 45 m 06 s
Ce sont les concepts de constante et de tableau que tu ne saisis pas ? C'est dommage, parce que c'est assez important pour la suite.

Une constante, c'est un symbole auquel on associe une valeur immuable, qui ne change pas et ne changera pas. C'est un peu une affirmation sur l'univers.
Ici, on définit un univers dans lequel il y a au maximum 100 employés (MaxEmp = 100) et au maximum 1000 enfants d'employés (MaxEnfEmp = 1000) (on se fout du nombre d'enfants par employé, l'important, c'est qu'en tout, il n'y a pas plus de 1000 enfants).

Un tableau, c'est une suite contiguë d'éléments du type du tableau. C'est comme des chambres d'hôtel, ou des casiers dans un vestiaire. Ici, ça commence à 1, ça finit à MaxEmp ou MaxEnfEmp, et il n'y a pas de trou dans la numérotation.

En bref :
TEmp : Tableau[1.. MaxEmp] de Employe est une manière de dire que TEmp est un ensemble ordonné de 100 cases qui contiennent des employés, et dont la première case porte le numéro 1.
TEnfEmp : Tableau[MaxEnfEmp] de EnfEmploye est un ensemble de 1000 cases qui contiennent des enfants d'employés.

Généralement, pour accéder à la case i du tableau T, on utilise la notation
T[i]. Donc pour accéder à l'enfant qui porte le numéro 17, on écrit TEnfEmp[17].

Pour répondre à tout l'exercice, vas-y par étapes: d'abord. cherche l'employé dont on a le numéro, puis à toi de trouver la suite.


Message édité 1 fois, la dernière par Petit_PimoOosE le 16 janvier 2008 - 04 h 45.

Huile de fraise.

quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 16 janvier 2008 - 18 h 46 m 33 s
Salut,
voici un debut de ce que j'ai fait. Ce n'est pas du tout complet, mais c'est pour vous doner un debut. Je dois rendre la taff demain...8O
Pourriez-vous md'aider ? merci

    Code     
 1. Algo       cadeaux
 2. var TEmp : TABLEAU[1..MaxEmp] de Employe
 3.      TEnf : TABLEAU[1..MaxEnfEmp] de EnfEmploye
 4. i, j, NbreKdos, NumSalarie, NbreEnfSalarie : ENTIER
 5. 
 6. DEBUT
 7. AFFICHER("Veuillez saisir le numéro du salarié");
 8. SAISIR(NumSalarie);
 9. i:=0;
10. j:=0;
11. NbreEnfSalarie:=0;
12. TANT QUE (TEmp[i].NumEmp<>NumSalarie ET i<100) FAIRE
13. i:=i+1;
14. SI(TEmp[i].NumEmp=NumSalarie ET TEmp[i].Nb_enfants<>0 ET TEnfEmp[j].Age<18) ALORS
15. NbreEnfSalarie:=NbreEnfSalarie+TEmp[i].Nb_enfants;
16. AFFICHER(NbreEnfSalarie);
17. SINON
18. AFFICHER("ce salarié n'a pas d'enfant");
19. FIN SI
20. FIN TANT QUE
21. AFFICHER("ce salarié n'existe pas");
22. FIN


MERCIIIIIIIIIIIII




quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 16 janvier 2008 - 23 h 10 m 16 s


Le 16 janvier 2008 - 18 h 46, quaresma a écrit :
Salut,
voici un debut de ce que j'ai fait. Ce n'est pas du tout complet, mais c'est pour vous doner un debut. Je dois rendre la taff demain...8O
Pourriez-vous md'aider ? merci

    Code     
 1. Algo       cadeaux
 2. var TEmp : TABLEAU[1..MaxEmp] de Employe
 3.     TEnf : TABLEAU[1..MaxEnfEmp] de EnfEmploye
 4.     IndexEmploye, IndexEnfant, NbreKdos, NumSalarie, NbreEnfSalarie : ENTIER
 5. 
 6. DEBUT
 7.     AFFICHER("Veuillez saisir le numéro du salarié");
 8.     //saisi du numéro du salarié//
 9. 	SAISIR(NumSalarie);
10.     //initialisation des variables//
11.     IndexEmploye:=0;
12. 	IndexEnfant:=0;
13. 	NbreEnfSalarie:=0;
14.     Nom:=TEmp[IndexEmploye].NomEmp;
15.     //On parcourt le tableau des employés afin de voir si le numero saisi est présent//
16. 	TANT QUE (TEmp[IndexEmploye].NumEmp<>NumSalarie ET IndexEmploye<100) FAIRE
17.      IndexEmploye:=IndexEmploye+1;
18.         //Si le numero du salarié est présent dans le tableau on poursuit//
19. 		SI(TEmp[IndexEmploye].NumEmp=NumSalarie) ALORS
20.          IndexEmploye=IndexEnfant;
21.         FIN SI
22.         //si le salarié a des enfants de moins de 18 ans on incrémente//
23.         Si(TEmp[IndexEmploye].NumEmp=NumSalarie ET TEmp[IndexEmploye].Nb_enfants<>0 ET TEnfEmp[IndexEnfant].Age<18) ALORS
24. 		 NbreEnfSalarie:=NbreEnfSalarie+TEmp[IndexEmploye].Nb_enfants;
25.          NbreKdos:=NbreEnfSalarie;
26.          AFFICHER("Pour Mr ou Mme","",Nom,"","il faut","",NbreKdos,"","cadeaux");
27. 		SINON
28.          //Si le numero du salarié est présent dans le tableau et que celui-ci a des enfants, mais qu'ils ont plus de 18 ans on n'affiche un message pour l'indiquer//
29.         SI(TEmp[IndexEmploye].NumEmp=NumSalarie ET TEmp[IndexEmploye].Nb_enfants<>0 et TEnfEmp[IndexEnfant].Age>=18) ALORS
30. 			AFFICHER("ce salarié a un ou plusieurs enfant(s) mais ils ont plus de 18 ans");
31.         SINON
32.          //Si le numero du salarié est présent mais que celui-ci n'a pas d'enfant on n'affiche un message pour l'indiquer//
33.         SI(TEmp[IndexEmploye].NumEmp=NumSalarie ET TEmp[IndexEmploye].Nb_enfants=0) ALORS
34. 			AFFICHER("ce salarié n'a pas d'enfants");
35.          //Si le numero du salarié n'est pas dans le tableau, on n'affiche un message d'erreur//
36. 		FIN SI
37.         FIN SI
38.         FIN SI
39.     FIN TANT QUE
40. 	AFFICHER("ce salarié n'existe pas");
41. FIN


MERCIIIIIIIIIIIII




Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 17 janvier 2008 - 04 h 31 m 26 s
Je suppose que c'est un peu tard, mais... Bon, c'est un départ.

D'abord, ne te sers pas de 100 mais de MaxEmp. C'est là l'intérêt d'avoir une constante.
D'autre part, tu n'as pas besoin de faire tout le tintouin dans la boucle de recherche de l'employé. Cherche l'employé, puis fais ce que tu as as faire une fois que tu l'as trouvé.

Mmh, quoi d'autre. IndexEnfant, il faut le trouver, aussi (d'autant plus qu'il risque d'y en avoir plusieurs). Par ailleurs, si l'employé n'a que des enfants de plus de 18 ans, pas besoin de message, il y a juste à préparer 0 cadeau.

Désolé, pas de suite pour ce soir.



Huile de fraise.

quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 17 janvier 2008 - 05 h 04 m 01 s
Et ca ?

    Code     
 1. Algo         cadeaux
 2. var TEmp : TABLEAU[1..MaxEmp] de Employe
 3.     TEnf : TABLEAU[1..MaxEnfEmp] de EnfEmploye
 4.     NumEmp, IndexEmploye, IndexEnfant, NbCadeau, NumSalarie, NbreEnfSalarie : ENTIER
 5. 
 6. DEBUT
 7.     AFFICHER("Veuillez saisir le numéro du salarié");
 8. 	//saisi du numéro du salarié//
 9. 	Saisir(NumSalarie);
10. 
11. 	//On parcourt le tableau des employés afin de voir si le numero saisi est présent//
12. 	IndexEmploye:=0;
13. 	Tant Que TEmp[IndexEmploye].NumEmp<>NumSalarie ET IndexEmploye<100 Faire
14. 		IndexEmploye:=IndexEmploye+1;
15. 	Fin Tant Que // On a le numero, inutile de continuer.
16. 
17. 
18. 	//Si le numéro du salarié N'est PAS présent dans le tableau on génère une erreur.
19. 	Si ( IndexEmploye >= MaxEmp) Alors
20. 		AFFICHER("ce numéro de salarié n'existe pas");
21. 	Fin Si
22. 
23. 
24. 	// Si on arrive là, c'est que l'on a trouvé l'employé.
25. 	NumEmp:=TEmp[IndexEmploye].NumEmp;
26. 	NbreEnfSalarie := TEmp[IndexEmploye].Nb_Enfants;
27. 	
28. 
29. 	//Maintenant que l'on a le numéro de l'employé et son nombre d'enfant, on peut chercher dans la liste des enfants.
30. 	IndexEnfant:=0;
31. 	Tant que NbreEnfSalarie > 0 Faire
32. 		Si TEnfEmp[IndexEnfant].NumEmp = NumEmp Alors
33. 			NbreEnfSalarie := NbreEnfSalarie - 1 ; // On a trouvé un enfant donc on décrémente le compteur.
34. 			Si TEnfEmp[IndexEnfant].Age < 18 Alors
35. 				NbCadeau := NbCadeau + 1 ; // L'enfant est mineur, donc on ajoute un cadeau.
36. 			Fin Si
37. 		Fin Si
38. 		IndexEnfant := IndexEnfant + 1 ;
39. 	Fin Tant Que
40.     AFFICHER("Il faut","",NbCadeau,"","cadeaux pour les salariés");
41. FIN


;)




quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 17 janvier 2008 - 15 h 58 m 05 s
Jolies surprises aujourd'hui !!
[u]Il y avait des erreurs dans l'énoncé.[/u]

- Il faut saisir le nom de l'employé et non pas son numero.
- et c'est Num_Emp : Chaine pour les 2 types. (erreur dans le 2ème type)

A rendre pour demain donc...


Message édité 1 fois, la dernière par quaresma le 17 janvier 2008 - 15 h 58.


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 18 janvier 2008 - 03 h 27 m 26 s
Ça, ça m'a l'air bon :-)



Huile de fraise.

quaresma


Messages : 359
Inscrit le 22/05/04
Ville : Grenoble
Non connecté
  Posté le 18 janvier 2008 - 09 h 38 m 24 s
Comme l'énoncé a changé, voici l'algo:

    Code     
 1. Algo         cadeaux
 2. var TEmp : TABLEAU[1..MaxEmp] de Employe
 3.     TEnf : TABLEAU[1..MaxEnfEmp] de EnfEmploye
 4.     IndexEmploye, IndexEnfant, NbCadeau, NbreEnfSalarie : ENTIER
 5.     Nom : Chaine
 6. 
 7. DEBUT
 8. 	AFFICHER("Veuillez saisir le nom du salarié");
 9. 	//saisi du nom du salarié//
10. 	Saisir(Nom);
11. 
12. 	//On parcourt le tableau des employés afin de voir si le nom saisi est présent//
13. 	IndexEmploye:=1;
14. 	Tant Que TEmp[IndexEmploye].NomEmp<>Nom ET IndexEmploye<MaxEmp Faire
15. 		IndexEmploye:=IndexEmploye+1;
16. 	Fin Tant Que // On a le nom, inutile de continuer.
17. 
18. 
19. 	//Si le nom du salarié n'est pas présent dans le tableau //
20. 	Si TEmp[IndexEmploye].NomEmp<>Nom Alors
21. 		// alors on génère une erreur //
22. 		AFFICHER("ce salarié n'existe pas");
23. 	Sinon
24. 
25. 		//Sinon, si on arrive là, c'est qu'on a trouvé l'employé//
26. 		NbreEnfSalarie := TEmp[IndexEmploye].Nb_Enfants;
27. 
28.     	//Maintenant que l'on a le nom de l'employé et son nombre d'enfant, on peut chercher dans la liste des enfants.
29. 		IndexEnfant:=1;
30. 		Tant que NbreEnfSalarie > 0 ET IndexEnfant <= MaxEnfEmp Faire
31. 			Si TEnfEmp[IndexEnfant].NumEmp = TEmp[IndexEmploye].NumEmp Alors
32. 				NbreEnfSalarie := NbreEnfSalarie - 1 ; // On a trouvé un enfant donc on décrémente le compteur.
33. 				Si TEnfEmp[IndexEnfant].Age < 18 Alors
34. 					NbCadeau := NbCadeau + 1 ; // L'enfant est mineur, donc on ajoute un cadeau.
35. 				Fin Si
36. 			Fin Si
37. 			IndexEnfant := IndexEnfant + 1 ;
38. 		Fin Tant Que
39.       	AFFICHER("Il faut","",NbCadeau,"","cadeaux pour tous les enfants de moins de 18 ans de la société");	
40.     Fin Si
41. FIN




Page genérée en 1.0320 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory