[ADA]Recherche séquentielle?
Spectrom
-
anonyme -
anonyme -
Bonjour à tous, j'ai un travail à faire en Ada, il s'agit d'un générateur de notes aléatoire qui doit générer 30 notes (sur 20) et qui ne peut pas avoir deux notes identiques parmi elles (toutes les notes doivent être différentes), et le tout doit être précis au quart de point, j'ai commencé mon code mais j'ai beaucoup de mal à faire des fonctions.
Je dois faire une autre fonction (ou une procédure peut être) qui permet, une fois la génération aléatoire effectuée, de demander à l'utilisateur d'entrer une note pour voir si elle figure dans la liste de notes générées. Et pour avoir des notes différentes j'ai pensé à faire une autre fonction mais je n'ai pas d'idée :/
Voici ce que j'ai fait pour l'instant:
WITH Ada.Float_Text_IO, Ada.Integer_Text_IO, Ada.Text_IO;
USE Ada.Float_Text_IO, Ada.Integer_Text_IO, Ada.Text_IO;
with Ada.Numerics.Discrete_Random;
PROCEDURE Tirage_Alea IS
TYPE Tab IS ARRAY (Integer RANGE <>) Of float;
T: Tab (1..30);
TYPE Numero IS RANGE 0..80;
package aleatoire is new Ada.Numerics.Discrete_Random(Numero);
USE Aleatoire;
Note : Numero;
G : Generator;
X : Float;
Y : Float;
Chercher: Float;
N: Integer;
function Recherche (T: IN Tab; N : IN Integer; X :IN Float) RETURN Integer IS --pour rechercher la note spécifiée (recherche séquentielle)
Trouve : Integer;
i : integer;
BEGIN
i := 0;
WHILE Trouve /= 1 AND I <= N LOOP
IF T(I) = X THEN
Trouve :=1;
END IF;
end loop;
RETURN Trouve;
END;
BEGIN
Put ("Generation de 30 notes dans 2 secondes");New_Line;
Delay 2.0;
Reset (G);
FOR I IN T'Range LOOP
Note := Random (G);
X := Float(Note) /4.00;
Put(X,2,2,0); New_Line;
END LOOP;
Put ("Donnez une note");
Get (Chercher);
Chercher := Float(Recherche(Tab,N, Chercher));
Put (Chercher);
END tirage_alea;
Ma fonction recherche est à refaire car n'ayant pas trouvé de solution j'ai été voir sur quelques sites et j'ai bricolé un truc bancal.
Les fonctions n'étant décidément pas ma tasse de thé, je souhaiterais avoir un peu d'aide sur ce que je devrais faire pour la fonction recherche et l'autre pour les nombres différents.
Je dois faire une autre fonction (ou une procédure peut être) qui permet, une fois la génération aléatoire effectuée, de demander à l'utilisateur d'entrer une note pour voir si elle figure dans la liste de notes générées. Et pour avoir des notes différentes j'ai pensé à faire une autre fonction mais je n'ai pas d'idée :/
Voici ce que j'ai fait pour l'instant:
WITH Ada.Float_Text_IO, Ada.Integer_Text_IO, Ada.Text_IO;
USE Ada.Float_Text_IO, Ada.Integer_Text_IO, Ada.Text_IO;
with Ada.Numerics.Discrete_Random;
PROCEDURE Tirage_Alea IS
TYPE Tab IS ARRAY (Integer RANGE <>) Of float;
T: Tab (1..30);
TYPE Numero IS RANGE 0..80;
package aleatoire is new Ada.Numerics.Discrete_Random(Numero);
USE Aleatoire;
Note : Numero;
G : Generator;
X : Float;
Y : Float;
Chercher: Float;
N: Integer;
function Recherche (T: IN Tab; N : IN Integer; X :IN Float) RETURN Integer IS --pour rechercher la note spécifiée (recherche séquentielle)
Trouve : Integer;
i : integer;
BEGIN
i := 0;
WHILE Trouve /= 1 AND I <= N LOOP
IF T(I) = X THEN
Trouve :=1;
END IF;
end loop;
RETURN Trouve;
END;
BEGIN
Put ("Generation de 30 notes dans 2 secondes");New_Line;
Delay 2.0;
Reset (G);
FOR I IN T'Range LOOP
Note := Random (G);
X := Float(Note) /4.00;
Put(X,2,2,0); New_Line;
END LOOP;
Put ("Donnez une note");
Get (Chercher);
Chercher := Float(Recherche(Tab,N, Chercher));
Put (Chercher);
END tirage_alea;
Ma fonction recherche est à refaire car n'ayant pas trouvé de solution j'ai été voir sur quelques sites et j'ai bricolé un truc bancal.
Les fonctions n'étant décidément pas ma tasse de thé, je souhaiterais avoir un peu d'aide sur ce que je devrais faire pour la fonction recherche et l'autre pour les nombres différents.
A voir également:
- [ADA]Recherche séquentielle?
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche image - Guide
- Je recherche une chanson - Guide
- Recherche privée - Guide