#include <iostream> using namespace std; double pConst(double p1R, double v1R, double v2R, double T1R, double T2R) { double result; result=(p1R*v1R*T2R)/(v2R*T1R); return result; } double vConst(double p1R, double p2R, double v1R, double T1R, double T2R) { double result; result=(p1R*v1R*T2R)/(p2R*T1R); return result; } double TConst(double p1R, double p2R, double v1R, double v2R, double T1R) { double result; result=(p2R*v2R*T1R)/(p1R*v1R); return result; } int main() { double p1(101300.), p2(1.), v1(20.), v2(30.), T1(3.), T2(252.); double resultat(1.), cMerc(1.), mrPa(1.); int i(1), j(1); string constant("a"), recherche("a"), mrcr("a"), continuer("a"); cout << "Bienvenue dans le programme de Mecanique Appliquee Release V1.1! " << endl; cout << "1. Les Gaz Parfaits" << endl; do {//1dowhile gen do { do { cout << "Transformer des cm de mercure en Pa?" << endl; cout << "a. oui" << endl; cout << "b. non" << endl; cin >> mrcr; }while (mrcr!="a" and mrcr!="b"); if (mrcr=="a") { cout << "Combien de cm?"; cin >> cMerc; mrPa=101300*(cMerc/76); cout << cMerc << " cm de mercure = " << mrPa << " Pa. Veuillez notez cette valeur." << endl; } cout << "Entrez a, b, c ou d.?" << endl; cout << "a) La pression reste constante (p1=p2) " << endl; cout << "b) Le volume reste constant (v1=v2)" << endl; cout << "c) La temperature reste constante" << endl; cout << "d) Ni la pression, le volume, la temperature ne reste constant." << endl; cin >> constant; if (constant=="a" or constant=="b" or constant=="c" or constant=="d") j=2; } while ((constant!="a" and constant!="b" and constant!="c" and constant !="d")and(j!=2)); while (((constant=="a" and recherche=="a") or (constant=="b" and recherche=="b") or (constant=="c" and recherche=="c")) or (i==1)) { do { cout << "Quelles valeurs recherchez-vous? (Entrez la lettre correspondante)" << endl; if (constant!="a") cout << "a. La pression" << endl; if (constant!="b") cout << "b. Le volume" << endl; if (constant!="c") cout << "c. La temperature" << endl; cin >> recherche; } while(recherche !="a" and recherche!="b" and recherche!="c"); i=2; } cout << "Entrez les valeurs : (Si une valeur est constante, et inconnue, entrez 1)." << endl; cout << "p1 : "; cin >> p1; if ((constant!="a")and(recherche!="a")) {cout << "p2 : "; cin >> p2; } if (constant=="a") p2=p1; cout << "v1 : "; cin >> v1; if ((constant!="b")and(recherche!="b")) {cout << "v2 : "; cin >> v2;} if (constant=="b") v2=v1; cout << "T1 (en °K, t en °C+273): "; cin >> T1; if ((constant!="c")and(recherche!="c")) {cout << "T2 (en °K, t en °C+273): "; cin >> T2;} if (constant=="c") T2=T1; if (recherche=="a") { resultat=pConst(p1, v1, v2, T1, T2); cout << "La pression recherchee p2 = " << resultat << "(L'unite depend des unites utilisees dans la formule)" << endl; } if (recherche=="b") { resultat=vConst(p1, p2, v1, T1, T2); cout << "Le volume recherche v2 = " << resultat << "(L'unite depend des unites utilisees dans la formule)" << endl; } if (recherche=="c") { resultat=TConst(p1, p2, v1, v2, T1); cout << "La temperature recherchee T2 = " << resultat << "(L'unite depend des unites utilisees dans la formule)" << endl; } cout << "----------------" << endl; cout << "Relancer le programme? " << endl; cout << "a. oui" << endl; cout << "b. non merci" << endl; cin >> continuer; }while (continuer=="a");//2dowhilegen cout << "A bientot." << endl; return 0; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questiondouble result; result=(p1R*v1R*T2R)/(v2R*T1R); return result;
return (p1R*v1R*T2R)/(v2R*T1R);
type variable(valeur);se réfère normalement à une construction d'objet, pour les types primitifs l'écriture
type variable = valeur;est plus correcte, il en va de même pour les objets qui redéfinirait l'opérateur
=comme c'est le cas pour std::string.
cin >> cMerc;avec cMerc un double, que se passera-t-il si tu rentres un string quelconque (pas un double) ? Ou si tu rentres une valeur négative alors que l'on sait pertinemment que la valeur attendue est positive ?
#include <iostream> #include <sstream> #include <limits> #include <cassert> double compute(double p1R, double v1R, double v2R, double t1R, double t2R) { return (p1R * v1R * t2R) / (v2R * t1R); } int menu(const std::string& content, int nbChoice) { while (true) { char choice = 0; std::cout << content; bool valid = std::cin >> choice; if (valid) { for (int i = 0; i < nbChoice; ++i) if (choice - 'a' == i) return i; } std::cout << "Choix invalide !" << std::endl; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } return -1; } double askDouble(const std::string& content) { double res = 0; bool valid = true; do { std::cout << content; valid = std::cin >> res; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); if (!valid) std::cout << "Valeur invalide ! Entrez un décimal correcte." << std::endl; } while (!valid); return res; } char askComputeType(const std::string& content, bool const_tab[3]) { char res = 0; do { std::cout << content; std::cin >> res; std::cin.clear(); std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } while (res < 'a' || res > 'c' || const_tab[res - 'a']); return res; } void mercureToPa() { switch (menu("Transformer des cm de mercure en Pa?\n" "a. oui\n" "b. non\n", 2)) { case 0: { const double cMerc = askDouble("Combien de cm ? "); std::cout << cMerc << " cm de mercure = " << 101300 * (cMerc / 76) << " Pa." " Veuillez notez cette valeur." << std::endl; } case 1: return; default: assert(false); // Should not be reachable } } void computePerfectGas() { bool const_tab[3] = {false, false, false}; switch (menu("Entrez a, b, c ou d.\n" "a) La pression reste constante (p1=p2)\n" "b) Le volume reste constant (v1=v2)\n" "c) La temperature reste constante\n" "d) Ni la pression, le volume, la temperature ne reste constant.\n", 4)) { case 0: const_tab[0] = true; break; case 1: const_tab[1] = true; break; case 2: const_tab[2] = true; break; case 3: break; default: assert(false); // Should not be reachable } // Construction de la question, en fonction des constantes std::ostringstream buff; buff << "Quelles valeurs recherchez-vous? (Entrez la lettre correspondante)" << std::endl; if (!const_tab[0]) buff << "a. La pression" << std::endl; if (!const_tab[1]) buff << "b. Le volume" << std::endl; if (!const_tab[2]) buff << "c. La temperature" << std::endl; const char type = askComputeType(buff.str(), const_tab); std::cout << "Entrez les valeurs : (Si une valeur est constante, et inconnue, entrez 1)." << std::endl; const double p1 = askDouble("p1 : "); double p2 = p1; if (!const_tab[0]) p2 = askDouble("p2 : "); const double v1 = askDouble("v1 : "); double v2 = v1; if (!const_tab[1]) v2 = askDouble("v2 : "); const double t1 = askDouble("T1 (en °K, t en °C+273): "); double t2 = t1; if (!const_tab[2]) v2 = askDouble("T2 (en °K, t en °C+273): "); switch (type) { case 'a': std::cout << "La pression recherchee p2 = " << compute(p1, v1, v2, t1, t2) << "(L'unite depend des unites utilisees dans la formule)" << std::endl; break; case 'b': std::cout << "Le volume recherche v2 = " << compute(p1, p2, v1, t1, t2) << "(L'unite depend des unites utilisees dans la formule)" << std::endl; break; case 'c': std::cout << "La temperature recherchee T2 = " << compute(p1, p2, v1, v2, t1) << "(L'unite depend des unites utilisees dans la formule)" << std::endl; break; default: assert(false); // Should not be reachable } } int main() { bool stop = false; std::cout << "Bienvenue dans le programme de Mecanique Appliquee Release V1.1 !\n" << "1. Les Gaz Parfaits" << std::endl; while (!stop) { mercureToPa(); computePerfectGas(); if (menu("----------------\n" "Relancer le programme ?\n" "a. oui\n" "b. non merci\n", 2) != 0) stop = true; } std::cout << "A bientot." << std::endl; return 0; }
Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature