begin process at 2012 05 27 14:04:11
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > CALCUL D'INCERTITUDE

CALCUL D'INCERTITUDE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Classé sous :Calcul, Incertitude, mesure, valeur Niveau :Débutant Date de création :01/03/2010 Date de mise à jour :24/08/2010 20:04:19 Vu :3 387

Auteur : Minilogus

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

 Description

Cliquez pour voir la capture en taille normale
Ce petit programme sert à calculer une incertitude sur une valeur à partir des autres valeurs/incertitudes.

Il est surtout utile lorsque l'opération à réaliser est répétitive et/ou longue.

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

Source

  • #include <iostream>
  • #include <vector>
  • #include <cmath>
  • #include <sstream>
  • template<typename numbr3s> void nb(numbr3s &num , const bool &entier)
  • {
  • std::string saisie;
  • std::string verif;
  • size_t found;
  • bool good = true;
  • bool trouble = false;
  • numbr3s num1;
  • do
  • {
  • if(good == false)
  • {
  • std::cout << std::endl << "-> Saisie incorrecte, ressaisissez: ";
  • }
  • std::cin>>saisie;
  • if(entier != true)
  • {
  • 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 >> num1;
  • if(iss.fail())
  • {
  • good = false;
  • trouble = true;
  • }
  • else
  • {
  • std::ostringstream oss;
  • oss << num1;
  • verif = oss.str();
  • if(verif.size() < saisie.size())
  • {
  • good = false;
  • trouble = true;
  • }
  • else{good = true;}
  • }
  • if(good == true && trouble == true)
  • {
  • std::cout << "-> OK!" << std::endl << std::endl;
  • }
  • }while(good == false);
  • num = num1;
  • }
  • int main()
  • {
  • std::cout<<">-------------------- CALCUL D'INCERTITUDE --------------------<"<<std::endl<<std::endl;
  • double val , total1;
  • int taille , quitter = 0 , Z;
  • do//pour le "quitter" de fin
  • {
  • if(quitter == 0)// ce cas ne se présentera qu'une seule fois.
  • {
  • std::cout << " |------------------------------------------------------------|" << std::endl;
  • std::cout << " | delta(1)/(1) = [delta(2)/(2)] + [delta(3)/(3)] + ... |" << std::endl;
  • std::cout << " |------------------------------------------------------------|" << std::endl << std::endl;
  • }
  • std::cout << "Entrer la valeur (1) dont on cherche l'incertitude: ";
  • nb(val , 0);
  • val = std::abs(val);
  • do
  • {
  • std::cout << "Indiquer le nombre de valeurs permettant de calculer la valeur (1): ";
  • nb(taille , 1);
  • 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.
  • std::vector<double> INC(taille,0);// même chose que ci-dessus mais pour les incertitudes.
  • std::cout << std::endl << "Entrer ces valeurs: " << std::endl;
  • Z = 0;
  • do
  • {
  • std::cout << std::endl << "<----->";
  • std::cout << std::endl << "Valeur (" << Z+2 << ") = ";
  • nb(VAL[Z] , 0);
  • std::cout << "Incertitude sur la valeur (" << Z+2 << ") = ";
  • nb(INC[Z] , 0);
  • Z++;
  • std::cout << "<----->" << std::endl;
  • }while(Z < taille);
  • total1 = 0;
  • Z = 0;
  • do
  • {
  • total1 = total1 + std::abs(INC[Z]/VAL[Z]);
  • Z++;
  • }while(Z < taille);
  • std::cout << std::endl << "L'incertitude sur la valeur (1) est: " << total1 * val;
  • std::cout << std::endl << std::endl << ">--------------------------------------------------------------<" << std::endl;
  • std::cout << std::endl << "--> Faire un autre calcul d'incertitude? (1=oui/0=non): ";
  • nb(quitter , 1);
  • std::cout << std::endl << ">--------------------------------------------------------------<" << std::endl << std::endl;
  • }while(quitter > 0);
  • return 0;
  • }
#include <iostream>
#include <vector>
#include <cmath>
#include <sstream>

template<typename numbr3s> void nb(numbr3s &num , const bool &entier)
{
    std::string saisie;
    std::string verif;

    size_t found;
    bool good = true;
    bool trouble = false;
    numbr3s num1;

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

        std::cin>>saisie;

        if(entier != true)
        {
            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 >> num1;

        if(iss.fail())
        {
            good = false;
            trouble = true;
        }
        else
        {
            std::ostringstream oss;
            oss << num1;

            verif = oss.str();

            if(verif.size() < saisie.size())
            {
                good = false;
                trouble = true;
            }
            else{good = true;}
        }

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

    }while(good == false);

    num = num1;
}

int main()
{
    std::cout<<">-------------------- CALCUL D'INCERTITUDE --------------------<"<<std::endl<<std::endl;
    double val , total1;
    int taille , quitter = 0 , Z;

    do//pour le "quitter" de fin
    {
        if(quitter == 0)// ce cas ne se présentera qu'une seule fois.
        {
            std::cout << "  |------------------------------------------------------------|" << std::endl;
            std::cout << "  |    delta(1)/(1) = [delta(2)/(2)] + [delta(3)/(3)] + ...    |" << std::endl;
            std::cout << "  |------------------------------------------------------------|" << std::endl << std::endl;
        }

        std::cout << "Entrer la valeur (1) dont on cherche l'incertitude:  ";
        nb(val , 0);
        val = std::abs(val);

        do
        {
            std::cout << "Indiquer le nombre de valeurs permettant de calculer la valeur (1): ";
            nb(taille , 1);
            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.
        std::vector<double> INC(taille,0);// même chose que ci-dessus mais pour les incertitudes.

        std::cout << std::endl << "Entrer ces valeurs: " << std::endl;

        Z = 0;

        do
        {
            std::cout << std::endl << "<----->";
            std::cout << std::endl << "Valeur (" << Z+2 << ") = ";
            nb(VAL[Z] , 0);
            std::cout << "Incertitude sur la valeur (" << Z+2 << ") = ";
            nb(INC[Z] , 0);
            Z++;
            std::cout << "<----->" << std::endl;
        }while(Z < taille);

        total1 = 0;
        Z = 0;

        do
        {
            total1 = total1 + std::abs(INC[Z]/VAL[Z]);
            Z++;
        }while(Z < taille);

        std::cout << std::endl << "L'incertitude sur la valeur (1) est: " << total1 * val;
        std::cout << std::endl << std::endl << ">--------------------------------------------------------------<" << std::endl;
        std::cout << std::endl << "--> Faire un autre calcul d'incertitude? (1=oui/0=non): ";
        nb(quitter , 1);
        std::cout << std::endl << ">--------------------------------------------------------------<" << std::endl << std::endl;
    }while(quitter > 0);
    return 0;
}



 Historique

01 mars 2010 21:06:46 :
Rajout d'un screenshot
11 mars 2010 18:14:49 :
Refonte des fonctions de traitement d'erreur de saisie.
24 août 2010 20:04:19 :
Rectification d'un bug sévissant lors de la saisie d'un nombre négatif + templatisation de la fonction de saisie (permet de combiner anciennement "entier()" et "reel()" en une seule fonction "nb()".

 Sources du même auteur

Source avec une capture CALCUL DE VARIANCE
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 DE VARIANCE par Minilogus
PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
Source avec Zip LA CONSTANTE MRB EN VISUAL C++ par pgl10

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

DEVOIR A EFFECTUER DANS LE CADRE DE MES ETUDES [ par tommar ] J'AI UN ALGORITHME A ECRIRE ET A TRADUIRE EN LANGAGE C (IL S'AGIT D'UN DOSSIER "POLYNÔME").JE DEBUTE EN PROGRAMMATION ET J'AI DU MAL A M'EN SORTIR CAR Challenge - VC++ VB Split/Join [ par dpincon ] Voici, j ai l algo suivant (qui fonctionne tres bien en vb). Si qq un arrive &#224; le mettre en C++, je lui offre un irish cooofffee.&nbsp;Objectif : Calcul en multi précision de la valeur de pi [ par nico_rs4 ] Bonjour à tous, je dois réaliser un programme en C (calculant pi avec 1000 décimales) sachant que pi= 16( ((1/5^1)-(1/3*1/5^3)+ ((1/5*1/5^5)-(1/7*1/5 taille maximum d une valeur [ par maloudre ] bonjour a tousje suis en train de faire un petit prog en c++ sous linux et j ai un petit prob ...j aimerai savoir si cette declaration de variable : l initialiser des valeur [ par maloudre ] bonjoursuite a mon autre post " taille mximum d une valeur "je voudrais savoir comment initialiser avec des valeurs par defaut ( par ex 0 ) ma valeur les valeur de structure COMMTIMEOUTS ?????????? [ par hattabfethi ] Je veux faire une communication PC automate S7-200 via&nbsp; le port rs232.Si qq peut me donner les valeurs de la structure COMMTIMEOUTS. typedef stru effacer o fure et à mesure lorsquon exécute [ par sy3ns ] j'aimerais savoir sil exite une instruction qui permet d'effacer ce qu'on veut sur le stdout autrement dit jaffichele tour un de mon damier il sefface Position du curseur par rapport au texte d'un EDITTEXT [ par julien_boss ] Une nouvelle fois bonjour &#224; tous,dans le message de notification EN_CHANGE d'un EDITTEXT, je cherche&nbsp;&#224; savoir si la valeur entr&#233;e Valeur dans un fichier TXT [ par norton ] Bonjour, Mon programme doit affecter une valeur&nbsp;&#224; une variable, cette valeur se trouve dans un fichier txt.jusque la ok, mais une fois que m


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 : 0,374 sec (4)

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