(C ++)代码似乎在错误的循环中运行......?

时间:2014-11-06 18:40:26

标签: c++

我在学位期间一直在玩一些代码,我在另一个内部嵌套了一个do {} while()循环,但我遇到的问题是代码一直持续到即使在满足包裹数量之后,最后一辆货车已经满了......

代码如下。如果有人可以看看它并告诉我,我做错了什么都很棒。请记住,我只是用C ++编写了大约一个月的代码,所以我还有很多需要学习的东西......

#include <iostream>
using namespace std;

char cBeltFull;
int iVanCount, iParcelCount, iParcelLoaded;
float fHeaviestVanWeight, fParcelWeight, fCurrentPayload, fVanCapacity;
char cExit = 'N';

int main() {

    iVanCount = 1;
    iParcelLoaded = 1;
    fHeaviestWeight = 0;
    fVanCapacity = 410;


    do {
        //Get the number of parcels to dispatch
        cout << "How many parcels need sending?" << endl;
        cin >> iParcelCount;

        do {
            fCurrentPayload = 0;

            do {

                //Get parcel weight
                cout << endl << endl << endl << "What is the weight the parcel " << iParcelLoaded << "?";
                cin >> fParcelWeight;

                //'Load' the parcel
                cout << endl << endl << "Parcel loaded";
                iParcelLoaded ++;

                //Update the payload
                fCurrentPayload = fCurrentPayload + fParcelWeight;

            } while ((fCurrentPayload + fParcelWeight)) < fVanCapacity)

            //Dispatch the van
            cout << endl << endl << "Van dispatched.";

            //Update the van count
            iVanCount ++;

            if (fCurrentPayload > fHeaviestVanWeight) {

                //Update the heaviest weight
                fHeaviestVanWeight = fCurrentPayload;

            }

        } while (iParcelLoaded <= iParcelCount);

        cout << endl << endl << endl << "Vans dispatched: " << iVanCout;
        cout << endl << endl << "Weight of heaviest van: " << fHeaviestWeight;

        cout << endl << endl << endl << "Exit?  Y for YES or N for NO." << endl;
        cin >> cExit;

    } while (cExit == 'N');

}

1 个答案:

答案 0 :(得分:3)

更改此

} while (((fCurrentPayload + fParcelWeight)) < fVanCapacity);

到这个

} while (((fCurrentPayload + fParcelWeight)) < fVanCapacity
          && iParcelLoaded < iParcelCount);

这样您就可以加载用户输入的任意数量的项目。您的代码包含许多语法错误。

我为你纠正了这些问题,但下次发帖时请更加小心。

#include <iostream>
using namespace std;

char cBeltFull;
int iVanCount, iParcelCount, iParcelLoaded;
float fHeaviestVanWeight, fParcelWeight, fCurrentPayload, fVanCapacity;
char cExit = 'N';

int main() {

    iVanCount = 1;
    iParcelLoaded = 1;
    fHeaviestVanWeight = 0;
    fVanCapacity = 410;


    do {
        //Get the number of parcels to dispatch
        cout << "How many parcels need sending?" << endl;
        cin >> iParcelCount;

        do {
            fCurrentPayload = 0;

            do {

                //Get parcel weight
                cout << endl << endl << endl << "What is the weight the parcel " << iParcelLoaded << "?";
                cin >> fParcelWeight;

                //'Load' the parcel
                cout << endl << endl << "Parcel loaded";
                iParcelLoaded ++;

                //Update the payload
                fCurrentPayload = fCurrentPayload + fParcelWeight;

            } while (((fCurrentPayload + fParcelWeight)) < fVanCapacity && iParcelLoaded < iParcelCount);

            //Dispatch the van
            cout << endl << endl << "Van dispatched.";

            //Update the van count
            iVanCount ++;

            if (fCurrentPayload > fHeaviestVanWeight) {

                //Update the heaviest weight
                fHeaviestVanWeight = fCurrentPayload;

            }

        } while (iParcelLoaded <= iParcelCount);

        cout << endl << endl << endl << "Vans dispatched: " << iVanCount;
        cout << endl << endl << "Weight of heaviest van: " << fHeaviestVanWeight;

        cout << endl << endl << endl << "Exit?  Y for YES or N for NO." << endl;
        cin >> cExit;

    } while (cExit == 'N');

}