begin process at 2012 05 27 14:06:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCUL DE VARIANCE

CALCUL DE VARIANCE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :calcul, variance, moyenne, écart type Niveau :Débutant Date de création :06/03/2010 Date de mise à jour :11/03/2010 18:19:12 Vu :4 809

Auteur : Minilogus

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce petit programme sert à calculer la variance d'une série de valeur.

Exécutables disponibles sur cette page: http://minilog.freehostia.com/telechargements.php

Source

  • //------------------------------------------------------------ Fichier: variance.h ------------------------------------------------------------
  • #ifndef VARIANCE_H_INCLUDED
  • #define VARIANCE_H_INCLUDED
  • class variance
  • {
  • public:
  • //-- CONSTRUCTEUR --
  • variance();
  • //-- FONCTIONS --
  • void saisie(std::vector<double> &);
  • double moy(const std::vector<double> &);
  • double var(const std::vector<double> & , bool);
  • };
  • #endif
  • //----------------------------------------------------------------------------------------------------------------------------------------------
  • //------------------------------------------------------------ Fichier: variance.cpp ------------------------------------------------------------
  • #include <iostream>
  • #include <vector>
  • #include <sstream>
  • #include "variance.h"
  • //-- CONSTRUCTEUR --
  • variance::variance(){}
  • //--FIN DU CONSTRUCTEUR --
  • //-- METHODES --
  • void variance::saisie(std::vector<double> &t)// saisie dans un tableau.
  • {
  • std::cout<<std::endl<<"Entrer les valeurs:";
  • std::cout<<std::endl<<"_________________________________";
  • std::cout<<std::endl<<" >(O_O)< | Valeurs "<<std::endl;
  • std::cout<<"-----------|---------------------";
  • std::cout<<std::endl;
  • // fin de présentation, ==> insertion.
  • std::string saisie;
  • std::string verif;
  • size_t found;
  • bool good=1;
  • for(unsigned int i=0;i<t.size();i++)
  • {
  • std::cout<<" | "<<i+1<<". : ";
  • do
  • {
  • if(good==0)// en cas d'erreur de saisie...
  • {
  • std::cout<<">RESSAISIR | "<<i+1<<". : ";
  • }
  • std::cin>>saisie;
  • found=saisie.find_first_of(",");
  • while (found!=std::string::npos)
  • {
  • saisie[found]='.';// les virgules françaises seront automatiquement transformées en point.
  • found=saisie.find_first_of(",",found+1);
  • }
  • std::istringstream iss(saisie);// conversion du type string en type double.
  • iss>>t[i];
  • if(iss.fail())
  • {
  • good=0;
  • }
  • else
  • {
  • std::ostringstream oss;
  • oss<<t[i];
  • verif=oss.str();
  • if(verif.size() < saisie.size())
  • {
  • good=0;
  • }
  • else{good=1;}
  • }
  • }while(good==0);
  • }
  • }
  • double variance::moy(const std::vector<double> &t)
  • {
  • double k=0;
  • for(unsigned int i=0 ; i<t.size() ; i++)
  • {
  • k=k+t[i];
  • }
  • k=k/t.size();
  • return k;
  • }
  • double variance::var(const std::vector<double> &t , bool bout)
  • {
  • double u;
  • u=moy(t);
  • double k=0;
  • for(unsigned int i=0 ; i<t.size() ; i++)
  • {
  • k=k+(t[i]-u)*(t[i]-u);
  • }
  • if(bout==0)
  • {
  • k=k/t.size();
  • }
  • else
  • {
  • k=k/(t.size()-1);
  • }
  • return k;
  • }
  • //--FIN DES METHODES--
  • //-------------------------------------------------------------------------------------------------------------------------------------------
  • //------------------------------------------------------------ Fichier: main.cpp ------------------------------------------------------------
  • #include <iostream>
  • #include <vector>
  • #include <sstream>
  • #include <cmath>
  • #include "variance.h"
  • int entier()
  • {
  • std::string saisie;
  • std::string verif;
  • bool good=1;
  • bool trouble=0;
  • int num;
  • do
  • {
  • if(good==0)
  • {
  • std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
  • }
  • std::cin>>saisie;
  • std::istringstream iss(saisie);// conversion du type string en type double.
  • iss>>num;
  • if(iss.fail())
  • {
  • good=0;
  • trouble=1;
  • }
  • else
  • {
  • std::ostringstream oss;
  • oss<<num;
  • verif=oss.str();
  • if(verif.size() < saisie.size())
  • {
  • good=0;
  • trouble=1;
  • }
  • else{good=1;}
  • }
  • if(good==1 && trouble==1)
  • {
  • std::cout<<"-> OK!"<<std::endl;
  • }
  • }while(good==0);
  • return num;
  • }
  • int main()
  • {
  • std::cout<<">-------------------- CALCUL DE VARIANCE --------------------<"<<std::endl<<std::endl;
  • std::cout<<" |--------------------------------------------------------|"<<std::endl;
  • std::cout<<" | sigma^2 = somme{i=1 -> i=n}[(Xi-u)^2/n] |"<<std::endl;
  • std::cout<<" | |"<<std::endl;
  • std::cout<<" | le i de Xi est l'observation <<i>> de la variable X |"<<std::endl;
  • std::cout<<" | u est la moyenne de la variable X |"<<std::endl;
  • std::cout<<" | n est le nombre d'observations |"<<std::endl;
  • std::cout<<" |--------------------------------------------------------|"<<std::endl<<std::endl<<std::endl;
  • int taille;
  • int quitter=0;
  • int choix;
  • double sigma;
  • variance v;
  • do//pour le "quitter" de fin
  • {
  • std::cout<<"-------------------- MENU --------------------"<<std::endl<<std::endl;
  • std::cout<<" 1. Calcul de moyenne"<<std::endl;
  • std::cout<<" 2. Calcul de variance sur une population"<<std::endl;
  • std::cout<<" 3. Calcul de variance sur une partie de population"<<std::endl<<std::endl;
  • std::cout<<" 0. ) Quitter ("<<std::endl;
  • if(quitter==0)// cela ne sera possible que lors de la première utilisation, après il sera obligatoirement égal à 1 pour pouvoir recommencer un autre calcul.
  • {
  • std::cout<<std::endl<<std::endl;
  • std::cout<<" (NOTE: Le calcul de variance s'occupera de faire la moyenne.)";
  • std::cout<<std::endl;
  • }
  • std::cout<<std::endl<<"--> Choix: ";
  • do
  • {
  • choix=entier();
  • if(choix<0 || choix>3){std::cout<<std::endl<<"-> Le choix "<<choix<<" n'existe pas, ressaisissez: ";}
  • }while(choix<0 || choix>3);
  • if(choix==0)
  • {
  • std::cout<<std::endl<<">------------------------------------------------------------<"<<std::endl<<std::endl;
  • return 0;
  • }
  • std::cout<<std::endl;
  • do
  • {
  • std::cout<<"Indiquer le nombre de valeurs: ";
  • taille=entier();
  • if(taille<1){std::cout<<std::endl<<"-> ATTENTION! Il doit subsister au moins une valeur. Ressaisissez."<<std::endl<<std::endl;}
  • }while(taille<1);
  • std::vector<double> VAL(taille,0);// définition du "tableau" de stockage des valeurs.
  • v.saisie(VAL);
  • if(choix==1)
  • {
  • std::cout<<std::endl<<"==> La moyenne est de "<<v.moy(VAL)<<std::endl;
  • }
  • else
  • {
  • if(choix==2)
  • {
  • sigma=v.var(VAL , 0);
  • }
  • else
  • {
  • sigma=v.var(VAL , 1);
  • }
  • std::cout<<std::endl<<"==> La variance est de "<<sigma<<std::endl;
  • std::cout<<"==> sigma = "<<sqrt(sigma)<<std::endl;
  • }
  • std::cout<<std::endl<<std::endl<<">------------------------------------------------------------<"<<std::endl;
  • std::cout<<std::endl<<"--> Faire un autre calcul? (1=oui/0=non): ";
  • quitter=entier();
  • std::cout<<std::endl<<">------------------------------------------------------------<"<<std::endl<<std::endl;
  • }while(quitter>0);
  • return 0;
  • }
  • //-------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------ Fichier: variance.h ------------------------------------------------------------

#ifndef VARIANCE_H_INCLUDED
#define VARIANCE_H_INCLUDED

class variance
{
    public:

        //-- CONSTRUCTEUR --

        variance();

        //-- FONCTIONS --

        void saisie(std::vector<double> &);
        double moy(const std::vector<double> &);
        double var(const std::vector<double> & , bool);

};

#endif

//----------------------------------------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------ Fichier: variance.cpp ------------------------------------------------------------

#include <iostream>
#include <vector>
#include <sstream>
#include "variance.h"

//-- CONSTRUCTEUR --

variance::variance(){}

//--FIN DU CONSTRUCTEUR --

//-- METHODES --

void variance::saisie(std::vector<double> &t)// saisie dans un tableau.
{

    std::cout<<std::endl<<"Entrer les valeurs:";
    std::cout<<std::endl<<"_________________________________";
    std::cout<<std::endl<<"  >(O_O)<  | Valeurs "<<std::endl;
    std::cout<<"-----------|---------------------";
    std::cout<<std::endl;

    // fin de présentation, ==> insertion.

    std::string saisie;
    std::string verif;

    size_t found;
    bool good=1;

    for(unsigned int i=0;i<t.size();i++)
    {
        std::cout<<"           | "<<i+1<<". :   ";
        do
        {
            if(good==0)// en cas d'erreur de saisie...
            {
                std::cout<<">RESSAISIR | "<<i+1<<". :   ";
            }

            std::cin>>saisie;

            found=saisie.find_first_of(",");
            while (found!=std::string::npos)
            {
                saisie[found]='.';// les virgules françaises seront automatiquement transformées en point.
                found=saisie.find_first_of(",",found+1);
            }

            std::istringstream iss(saisie);// conversion du type string en type double.
            iss>>t[i];
            if(iss.fail())
            {
                good=0;
            }
            else
            {
                std::ostringstream oss;
                oss<<t[i];
                verif=oss.str();

                if(verif.size() < saisie.size())
                {
                    good=0;
                }
                else{good=1;}
            }

        }while(good==0);
    }
}

double variance::moy(const std::vector<double> &t)
{
    double k=0;
    for(unsigned int i=0 ; i<t.size() ; i++)
    {
        k=k+t[i];
    }

    k=k/t.size();

    return k;
}

double variance::var(const std::vector<double> &t , bool bout)
{
    double u;
    u=moy(t);

    double k=0;
    for(unsigned int i=0 ; i<t.size() ; i++)
    {
        k=k+(t[i]-u)*(t[i]-u);
    }

    if(bout==0)
    {
        k=k/t.size();
    }
    else
    {
        k=k/(t.size()-1);
    }

    return k;
}


//--FIN DES METHODES--

//-------------------------------------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------ Fichier: main.cpp ------------------------------------------------------------

#include <iostream>
#include <vector>
#include <sstream>
#include <cmath>
#include "variance.h"

int entier()
{
    std::string saisie;
    std::string verif;

    bool good=1;
    bool trouble=0;
    int num;

    do
    {
        if(good==0)
        {
            std::cout<<std::endl<<"-> Saisie incorrecte, ressaisissez: ";
        }

        std::cin>>saisie;

        std::istringstream iss(saisie);// conversion du type string en type double.
        iss>>num;
        if(iss.fail())
        {
            good=0;
            trouble=1;
        }
        else
        {
            std::ostringstream oss;
            oss<<num;
            verif=oss.str();

            if(verif.size() < saisie.size())
            {
                good=0;
                trouble=1;
            }
            else{good=1;}
        }

        if(good==1 && trouble==1)
        {
            std::cout<<"-> OK!"<<std::endl;
        }

    }while(good==0);

    return num;
}


int main()
{
    std::cout<<">-------------------- CALCUL DE VARIANCE --------------------<"<<std::endl<<std::endl;

    std::cout<<"  |--------------------------------------------------------|"<<std::endl;
    std::cout<<"  |        sigma^2 = somme{i=1 -> i=n}[(Xi-u)^2/n]         |"<<std::endl;
    std::cout<<"  |                                                        |"<<std::endl;
    std::cout<<"  |   le i de Xi est l'observation <<i>> de la variable X  |"<<std::endl;
    std::cout<<"  |   u est la moyenne de la variable X                    |"<<std::endl;
    std::cout<<"  |   n est le nombre d'observations                       |"<<std::endl;
    std::cout<<"  |--------------------------------------------------------|"<<std::endl<<std::endl<<std::endl;

    int taille;
    int quitter=0;
    int choix;
    double sigma;

    variance v;

    do//pour le "quitter" de fin
    {
        std::cout<<"--------------------  MENU  --------------------"<<std::endl<<std::endl;

        std::cout<<"     1. Calcul de moyenne"<<std::endl;
        std::cout<<"     2. Calcul de variance sur une population"<<std::endl;
        std::cout<<"     3. Calcul de variance sur une partie de population"<<std::endl<<std::endl;
        std::cout<<"     0. ) Quitter ("<<std::endl;

        if(quitter==0)// cela ne sera possible que lors de la première utilisation, après il sera obligatoirement égal à 1 pour pouvoir recommencer un autre calcul.
        {
            std::cout<<std::endl<<std::endl;
            std::cout<<"  (NOTE: Le calcul de variance s'occupera de faire la moyenne.)";
            std::cout<<std::endl;
        }

        std::cout<<std::endl<<"--> Choix: ";
        do
        {
            choix=entier();
            if(choix<0 || choix>3){std::cout<<std::endl<<"-> Le choix "<<choix<<" n'existe pas, ressaisissez: ";}
        }while(choix<0 || choix>3);

	if(choix==0)
        {
            std::cout<<std::endl<<">------------------------------------------------------------<"<<std::endl<<std::endl;
            return 0;
        }

        std::cout<<std::endl;

        do
        {
            std::cout<<"Indiquer le nombre de valeurs: ";
            taille=entier();
            if(taille<1){std::cout<<std::endl<<"-> ATTENTION! Il doit subsister au moins une valeur. Ressaisissez."<<std::endl<<std::endl;}
        }while(taille<1);

        std::vector<double> VAL(taille,0);// définition du "tableau" de stockage des valeurs.

        v.saisie(VAL);

        if(choix==1)
        {
            std::cout<<std::endl<<"==> La moyenne est de "<<v.moy(VAL)<<std::endl;
        }
        else
        {
            if(choix==2)
            {
                sigma=v.var(VAL , 0);
            }
            else
            {
                sigma=v.var(VAL , 1);
            }

            std::cout<<std::endl<<"==> La variance est de "<<sigma<<std::endl;
            std::cout<<"==> sigma = "<<sqrt(sigma)<<std::endl;
        }


        std::cout<<std::endl<<std::endl<<">------------------------------------------------------------<"<<std::endl;
        std::cout<<std::endl<<"--> Faire un autre calcul? (1=oui/0=non): ";
        quitter=entier();
        std::cout<<std::endl<<">------------------------------------------------------------<"<<std::endl<<std::endl;

    }while(quitter>0);
    return 0;
}

//-------------------------------------------------------------------------------------------------------------------------------------------



 Historique

06 mars 2010 23:43:39 :
Modification d'une variable et suppression d'une variable inutile. Rajout d'un screenshot.
11 mars 2010 18:19:12 :
Refonte des fonctions de traitement d'erreur de saisie + réorganisation de déclaration de certaines variables.

 Sources du même auteur

Source avec une capture CALCUL D'INCERTITUDE
Source avec une capture OPÉRATIONS SUR MATRICES C++

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

 Sources en rapport avec celle ci

CALCUL DE CLEF RIB par Renfield
Source avec une capture CONVERTISSEUR par smartties
Source avec une capture CALCUL D'INCERTITUDE par Minilogus
PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
Source .NET (Dotnet) CALCULE ET AFFICHE LE MAX LE MIN ET LA MOYENNE D'UN VECTEUR par trioy

Commentaires et avis

Commentaire de dardarsalma le 20/03/2011 22:16:14

salut,je vous demande  s'ils vous plait de m'aider:
aprés l'obtention des chaines de freeman(de 0 à 7) de frame vidéo en cour de traitement,on calcul l'histogramme a partire de ces chaines hist[i] de chaque frame,et donc je vous calcule la moyenne moy[i] =? de cet histogramme,
par exemple:
ona hist[0,1,2,3,4,5,6,7]=10,50,86,17,18,1,20,120 ca pour la 2em frame.
et pour la 7em frame:hist[0,1,2,3,4,5,6,7]=50,19,129,35,18,69,134,45.et ect...pour les autres frame.
les logiciels dont on a utilisé pour la programmation:
le code blocks(c++)et la biblio  open cv.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

[EXCEL]calcul de moyenne scolaire: gerer les absents!! [ par poloiu ] Bonjour, j'ai besoin de calculer la moyenne de plusieurs note. J'ai deux conditions : 1 l'élève peux être absent 2 les notes sont sur 10 ou sur 20 Co calcul distance géodésique! [ par charniele2 ] coucoi à tous![^^clinoeil1] bjr!! j'aimerai que vous m'aider pour la programmation du calcul de la distance géodésique entre 2 points sur une forme co Maillage 3D + quadtree + calcul de normales [ par buno ] Hello, J'ai un maillage 3D (terrain) avec 3 niveaux de détails que j'affiche à l'aide d'un quadtree. Le calcul et l'affichage des données se fait uniq le calcul de la complexité [ par boualiasma ] Bonjour, Quelle est la complexité au pire de cas pour le calcul de toutes les combinaisons possibles pour n caractères à partir de taille 2 jusqu'à exercices à résoudre [ par jomsow ] bonjour je suis débutant en C svp aidez moi à résoudre ces deux exercices : Exercice 1: Modifier le programme suivant de telle sorte qu’il affiche Créer une socket de calcul parallèle [ par walidhas ] slt, j'ai voulu créer une socket en MFC .Dans cette Socket le client et le serveur font chacun des calculs différents et durant ce calcul il y a échan resolution d'un probleme [ par sacrifice1 ] je voudrais bien savoir la solution de: un programme qui calcul la DCT d'une matrice puis un autre qui calcul la idct à partir du IDC en C. MERCI. Conversion code [ par jeanphilippe37 ] [u]Bonjour[/u], Voila, j'ai réalisé ce programme en C++ mais, je dois le rendre en langage C et j'ai bcp de mal à faire la traduction. Pourriez vous moyenne mobile [ par jeanjeuv ] Bonjour, Je cherche à réaliser une moyenne mobile en C, lorsque je regarde sur internet (http://fr.wikipedia.org/wiki/Moyenne_glissante) je ne compren


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales