014
08.01.2007, 20:22 Uhr
0xdeadbeef
Gott (Operator)
|
ist aber auch nicht grad ein portabler Weg, den screen zu clearen. Ganz zu schweigen davon, was passiert, wenn dir da jemand per doskey irgendwelche Makros unterschiebt.
Virtual's Weg ist ANSI-konform, das nützt dir aber unter DOS/Windows leider ziemlich wenig. Früher konnte man da die ansi.sys einbinden, um das zu kriegen, Aber wie das inzwischen aussieht...
So oder so, warum eigentlich cls? Funktioniert doch auch ohne gut.
C++: |
#ifdef __WIN32__ #include <cstdlib> #endif
#include <iomanip> #include <iostream> #include <sstream> #include <string>
void print_tables() { static double const bmi_table[][8][4] = { { { 14.9, 16.0, 21.6, 24.4 }, { 15.4, 16.6, 22.5, 25.4 }, { 16.1, 17.3, 23.3, 26.2 }, { 16.7, 17.8, 24.1, 26.9 }, { 17.3, 18.4, 24.5, 27.4 }, { 17.5, 19.0, 24.9, 27.6 }, { 18.9, 19.3, 25.0, 27.6 }, { 18.4, 19.6, 25.3, 27.7 } }, { { 15.0, 16.0, 21.4, 24.4 }, { 15.4, 16.5, 22.3, 25.3 }, { 15.9, 17.1, 23.0, 26.2 }, { 16.5, 17.7, 23.7, 26.9 }, { 17.0, 18.3, 24.4, 27.4 }, { 17.6, 18.8, 24.9, 27.9 }, { 18.1, 19.4, 25.4, 28.3 }, { 18.6, 20.2, 25.9, 28.7 } } };
static char const *const labels[] = { "Maedchen", "Jungen" };
std::cout << std::setprecision(1) << std::fixed;
for(int i = 0; i < 2; ++i) { std::cout << labels[i] << ":\n" "Alter Unter - Normal - Ueber - gewichtig\n";
for(int j = 0; j < 8; ++j) { std::cout << j + 11 << " " << bmi_table[i][j][0]; for(int k = 1; k < 3; ++k) { std::cout << " - " << bmi_table[i][j][k] - 0.1 << ' ' << bmi_table[i][j][k]; } std::cout << " - " << bmi_table[i][j][3] << '\n'; } }
std::cout << std::flush; }
double bmi(double weight, double height) { return weight / (height * height); }
template <typename t> t read_type(std::string const &prompt) { std::istringstream isstr; std::string s; t ret;
do { std::cout << prompt << std::flush; std::getline(std::cin, s);
isstr.clear(); isstr.str(s); isstr >> ret; } while(!isstr);
return ret; }
int main() { int op;
do { std::cout << "Menue:\n" "1: Berechnen\n" "2: Tabelle\n" "3: Ende\n" "\n"; op = read_type<int>("Auswahl: ");
switch(op) { case 1: { double w = read_type<double>("Gewicht in kg: "); double h = read_type<double>("Groesse in cm: ") / 100.0;
std::cout << "Ihr BMI betraegt " << bmi(w, h) << std::endl; } break; case 2: print_tables(); break; case 3: break; default: std::cout << "Ungueltige Eingabe." << std::endl; } } while(op != 3);
#ifdef __WIN32__ std::system("pause"); #endif }
|
-- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |