recherche dans tableau - Ada - Programmation
Marsh Posté le 20-04-2005 à 23:09:26
La logique en vb, voudrait que je fasse la chose suivante,
Tant que pas tab <> 23 faire
I = I+1
J = J+1
Fin tant que
N = I
Nombre valeur'pos = I
voilà mais il faut peut etre faire une umbrication supplémentaire, je sais pas, je continue de chercher .
si vous avez une solution, elle sera la bienvenue.
merci
Marsh Posté le 21-04-2005 à 09:10:10
J'aurais bien une tite idée... soit tu le fait à la barbare, et tu mets deux boucle For, une pour les lignes et une pour les colonnes. Mais c'est pas propre.
Sinon tu peux le faire avec deux boucles while genre....
Code :
|
une fois fini tu auras ses coordonnées dans index_ligne et index_colonne (normalement), j'ai pas testé....
bon courage
Marsh Posté le 21-04-2005 à 09:43:52
Bien entendu, je t'ai pas tout écrit... mais ça devrait t'aider.
Marsh Posté le 21-04-2005 à 12:35:07
Bonjour babar,
il semblerait que je rencontre des problèmes pour référencer
mon index ligne et mon index col,
Ma fonction :
Function Trouve( Tab : Mois_Complet; N_C : Nombre_Cherche) Return Integer Is
N : Integer;
I : Natural;
J : Natural;
Begin
While I < Tab'Last Loop
While J < Tab'Last Loop
Exit when Tab(I,J) = N_C;
J :=J +1;
N :=I;
End Loop;
I :=I +1;
End Loop;
Return N;
End Trouve_Jour;
J'ai aussi essayé avec deux boucles for, code qui à le mérite de compiler sans erreurs, mais la fonction plante avec un raise const err ;
Merci pour ta réponse,
Marsh Posté le 21-04-2005 à 13:32:56
Déjà penses bien à mettre les labels pour la boucle principal, sinon il sortira juste de la boucle J quand tu fais exit when...
Ensuite je te conseillerais de ne faire l'affectation qu'une fois le nombre trouvé, pas à chaque tour de ta deuxième boucle.
Enfin les tableaux en Ada commence à 1 donc tu peux aller jusqu'à Last... je l'avais pas mis dans le code d'avant...
et faut aussi initialiser les variables, c'est mieux pour pouvoir faire des opérations dessus.
En gros :
Code :
|
Après je réponds pitet pas complétement à ta question... mais bon j'essaie de t'aider.
Marsh Posté le 21-04-2005 à 15:23:59
Et si tu mettais plutôt :
Code :
|
Au passage, les puristes te diront qu'il vaut mieux déclarer I et N de type N_N et j de type P_P, et de remplacer I := I + 1 par I := N_N'succ(I);
Pour ma part, j'aurais plutôt opté pour un code du genre :
Code :
|
Marsh Posté le 21-04-2005 à 15:35:53
oui, en fait j'ai résumé un peu l'énoncé du ploblème,
il faut savoir que mon tableau s'organize autour de trois types différents.
le premier est
Soustype N_N Is integer range 1 .. 5;
le deusieme est en fait de type énumèré
comme
type P_P is (toto, tata, titi, tutu );
avec une déclaration de type Io.enumeration
qui fonctionne tres bien
un troisieme soutype Nb_N is integer range "dans l'exemple" 10..29;
et mon type tableau
Type tab is array (N: N_N, P: P_P) of Nb_N;
s'est probalement pour celà que je rencontre encore des pbs.
merci à toi pour tes explications.
Marsh Posté le 21-04-2005 à 15:40:56
il est vrai que c'est simple avec les deux boucles for, mais j'aime pas trop ça
Sinon c'est plus propre comme tu l'a dis avec des index typés comme ceux du tableaux ...
Pour ma défense, ça ne fait que 2 mois que je fais de l'Ada
Mais bon...
Sur ce, j'espère que ton pbm sera vite résolu labidouille
Marsh Posté le 20-04-2005 à 18:40:56
Bonjour,
J'ai un souci avec un code de recherche dans un tableau, j'e sais rechercher une valeur dans un tableau d'enregistrements mais là je coince sur un code :
J'ai deux soustypes
Soustype N_N Is integer range 1 .. 5;
P_P is integer range 1 .. 4
jai un type tab is array( N : N_N, P : P_P) return integer
Après résultats de mon prog qui marche à l'afichage, j'obtiens,
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
je veux trouver la valeur de I pour la valeur du tableau correspondant à 23
par exemple, moi je sais en regardant mon tableau que ce sera 4 mais ,j'arrive pas à trouver le code qui fait cela, en ada, je coince un peu...
Merci à vous