⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 balloon.cpp

📁 C++&datastructure书籍源码,以前外教提供现在与大家共享
💻 CPP
字号:
#include <iostream>using namespace std;#include "balloon.h"// implementation of balloon autopilot class// modified 1/9/94const int ALT_CHANGE = 10;        // altitude change in Vent/Burnconst int JUMP_SIZE =  5;         // random fluctuation when flyingBalloon::Balloon()// initialize balloon to be at zero altitude, no cruising forward{    myAltitude = 0;    myCruiseSteps = 0;}void Balloon::Ascend(int height)// precondition: height >= 0// postcondition: balloon has ascended to altitude >= height//                using minimum number of burns     {    cout << endl;    cout << "***** (Height = " << myAltitude << ") ";    cout << "Ascending to " << height << " meters ";    cout << "*****" << endl << endl;        while (myAltitude < height)    {        AltitudeMessage();        Burn();         cout << endl;    }}void Balloon::Descend(int height)// precondition: height >= 0// postcondition: balloon has descended to altitude <= height//                using minimum number of vents{    cout << endl;    cout << "***** (Height = " << myAltitude << ") ";    cout << "Descending to " << height << " meters ";    cout << "*****" << endl << endl;        while (myAltitude > height)    {        AltitudeMessage();                      Vent();        cout << endl;    }}void Balloon::Cruise(int duration)// precondition: 0 <= duration// postcondition: cruise for duration time steps//                (random altitude fluctuations possible){    const int START = myAltitude;    const int MARGIN = 5;    cout << endl;    cout << "***** Cruising at " << START << " meters " << endl;    cout << "***** with margin +/- " << MARGIN << endl;    cout << "****  for " << duration << " time-steps" << endl << endl;    int k;    for(k=0; k < duration; k+= 1)    {        AltitudeMessage();	myCruiseSteps += 1;	        cout << "(time step " << k << ") ";        AdjustAltitude();                if (myAltitude > (START + MARGIN)){      // too high, let air out            cout << " too high! ";            Vent();        }        else if (myAltitude < (START - MARGIN)){ // too low, burn            cout << " too low! ";            Burn();        }        cout << endl;    }}int Balloon::GetAltitude()// postcondition: returns altitude of balloon{    return myAltitude;}int Balloon::GetLocation()// postcondition: returns # of time-steps cruised forward     {    return myCruiseSteps;}void Balloon::AdjustAltitude()// fly for one time-step, adjust altitude randomly (flip coin)// precondition: altitude = t// postcondition: altitude in range [t-JUMP_SIZE,t+JUMP_SIZE]// exceptions: altitude cannot be below 0     {        if (myRand.RandInt(0,1) == 1){       // adjust on "coin-flip"            // add random number in range [-JUMP_SIZE,JUMP_SIZE]                int change = myRand.RandInt(-JUMP_SIZE,JUMP_SIZE);        if (change > 0) {            cout << "wind-shear +" << change << " m.";        }        else if (change < 0) {            cout << "wind-shear -" << -1*change << " m.";        }                myAltitude += change;        if (myAltitude < 0){            // keep balloon above ground            myAltitude = 0;                   }    }}void Balloon::Burn()// put air in balloon// precondition: altitude = t// postcondition: altitude = t + ALT_CHANGE     {    myAltitude += ALT_CHANGE;    BurnMessage();}void Balloon::Vent()// release air from balloon// precondition: altitude = t     // postcondition: altitude = t - ALT_CHANGE// exception:     altitude cannot be below 0{    myAltitude -= ALT_CHANGE;    if (myAltitude < 0) {        myAltitude = 0;       }     VentMessage();    }void Balloon::BurnMessage()// message printed when balloon filled with air (Burn called){    cout << " Burn!";}void Balloon::VentMessage()// message printed when air is let out of balloon (Vent called)     {    cout << " Woosh!";}void Balloon::AltitudeMessage()// print current altitude{    cout << myAltitude << " meters ";}    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -