with entrees_sorties; use entrees_sorties;
procedure exo3 is
tailleTableau : Integer;
type TableauDEntiers is array (Positive range <> ) of Integer;
nbDeMultDe3 : Integer := 0;
begin
get(tailleTableau);
while (tailleTableau < 1) loop
put("Entrez un entier positif : " );
get(tailleTableau);
end loop;
declare
tab : TableauDEntiers(1..tailleTableau);
begin
for i in tab'range loop
get(tab(i));
if (tab(i) mod 3 = 0) then
nbDeMultDe3 := nbDeMultDe3 + 1;
end if;
end loop;
declare
tabRes1 : TableauDEntiers(1..nbDeMultDe3);
tabRes2 : TableauDEntiers(1..(tailleTableau - nbDeMultDe3));
compteurRes1 : Integer := 1;
compteurRes2 : Integer := 1;
begin
for i in tab'range loop
if (tab(i) mod 3 = 0) then
tabRes1(compteurRes1) := tab(i);
compteurRes1 := compteurRes1 + 1;
else
tabRes2(compteurRes2) := tab(i);
compteurRes2 := compteurRes2 + 1;
end if;
end loop;
put("Il y a " & Integer'Image(nbDeMultDe3) & " multiples de 3 : " );
for i in tabRes1'range loop
put(Integer'Image(tabRes1(i)) & ", " );
end loop;
put(" et " & Integer'Image(tabRes2'length) & " non multiples : " );
for i in tabRes2'range loop
if (i /= tabRes2'length) then
put(Integer'Image(tabRes2(i)) & ", " );
else
put(Integer'Image(tabRes2(i)) & "." );
end if;
end loop;
end;
end;
end exo3;