Board logo
Exo 8: Moyenne et Variance

ftbass - 09/03/2004 à 22:01

Si je me suis pas trompé sur la formule de la variance...

code:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.float_Text_IO; use Ada.float_Text_IO;

procedure MoyenneEtVariance is

Long1 : constant := 3;
Tab1 : array(1 .. Long1) of integer := (1, 2, 3);
Moyenne, Variance : float := 0.0;

begin
 for i in 1..long1 loop
   moyenne := moyenne + float(tab1(i));
   Variance := variance + ((float(tab1(i))-moyenne) * ((float(tab1(i))-moyenne)));
 end loop;
 moyenne := moyenne / float(long1);
 Variance := variance / float(long1 - 1);
 put("Moyenne = ");
 put(moyenne);
 new_line;
 put("Variance = ");
 put(variance);
end MoyenneEtVariance;


[Edité le 16/03/2004 à 09:57 par ftbass]


Yossep - 04/06/2020 à 22:42

Bonjour a tous Ada Programmeurs. J'espère que je ne suis pas seul sur cette planète.

Exercice sur le calcul de la moyenne et la variance d'un tableau dont les éléments sont initialisés aléatoirement.

Code:
Economies.ads

quote:
With Ada.Text_IO, Ada.Integer_Text_IO, Ada.Numerics.Discrete_Random;

package Economies is
  type Mes_Entiers is new integer range 1..10;
  type Tableau is array(1..50) of Mes_Entiers;
 
  package ES_Mes_Entiers is new Ada.Text_IO.Integer_IO(Mes_Entiers);
  package Random_Mes_Entiers is new Ada.Numerics.Discrete_Random(Mes_Entiers);
 
  Use ES_Mes_Entiers, Random_Mes_Entiers;
 
  procedure MoyenneEtVariance;

end Economies;


Economies.adb


quote:
With Ada.Text_IO, Ada.Float_Text_IO;
Use Ada.Text_IO,Ada.Float_Text_IO;

package body Economies is

  procedure MoyenneEtVariance is
     Mon_Tab : Tableau;
     G : Generator;
     Moy, Variance : Float := 0.0;
     
  begin
     --initialisation de Mon_tab
     New_Line(3);
     for Short1 in 1..Mon_Tab'Length loop
        Reset(G);
        Mon_Tab(Short1) := Random(G);
        Put(Mon_Tab(Short1), 1);New_Line;
     end loop;
   
     --Calcul de la Moyenne et la variance
     for Short2 in 1..Mon_Tab'Length loop
        Moy := Moy + Float(Mon_Tab(Short2));
        Variance := Variance + ( (Float(Mon_Tab(Short2)) - Moy) * ((Float(Mon_Tab(Short2)) - Moy)) );
     end loop;
     
     Moy := Moy / Float(Mon_Tab'Length);
     Variance := Variance / Float(Mon_Tab'Length - 1);
     New_Line;
     
     Put("Moyenne =";);Put(Moy, Exp => 0, Fore => 3, Aft => 3);New_Line(2);
     Put("Variance = ";);Put(Variance, Exp => 0, Fore => 3, Aft => 3);New_Line(2);
     
     
  end MoyenneEtVariance;



Programme principal

main.adb

quote:

With Economies;
Use Economies;

procedure Main is

begin
  MoyenneEtVariance;

end Main;



:hot: