反馈 不良输出

Feedback + Bad output

本文关键字:输出 不良 反馈      更新时间:2023-10-16

所以我有一个任务,我认为我已经完成了或多或少的工作,但是有些东西会使输出陷入困境,在线的某个地方,甚至计算,我看不到问题在哪里。

任务是制作一场游戏,其中一定的玩家穿过隧道驶向一个地点,他们将停止并旋转它,然后他们的头晕应使他们随机地朝目标或目标迈进回归开始。每次他们将另一个位置更接近目标时,他们都会得到另一个"标记",然后继续这样做,直到其中一个达到目标为止。

该程序包括三个文件:一个main.cpp,一个标头文件和另一个CPP文件。

标题文件:

    #ifndef COMPETITOR_H
    #define COMPETITOR_H
    #include <string>
    using namespace std;
    class Competitor
    {
        public:
            void setName();
            string getName();
            void spin();
            void move();
            int checkScore();
            void printResult();
        private:
            string name;
            int direction;
            int markedSpots;
    };
    #endif // COMPETITOR_H

第二个CPP文件:

    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    #include "Competitor.h"

    using namespace std;

    void Competitor::setName()
    {
        cin>>name;
    }
    string Competitor::getName()
    {
        return name;
    }
    void Competitor::spin()        
    {
        srand(time(NULL));
        direction = rand()%1+0;
    }
    void Competitor::move()         
    {                               
        if(direction == 1)
        {
            markedSpots++;
        }
        else if(direction == 0 && markedSpots != 0)
        {
            markedSpots--;
        }
    }
    int Competitor::checkScore()
    {
        return markedSpots;
    }
    void Competitor::printResult() 
    {
        if(direction == 1)
        {
            cout<<" is heading towards goal and has currently "<<markedSpots<<" markings.";
        }
        else if(direction == 0)
        {
            cout<<"n"<<getName()<<" is heading towards start and has currently "<<markedSpots<<" markings.";
        }
    }

主CPP文件:

    #include <iostream>
    #include <string>
    #include <cstdlib>
    #include <ctime>
    #include "Competitor.h"
    using namespace std;
    void inputAndSetNames(Competitor comps[],int nrOfComps);
    void makeTwist(Competitor comps[],int nrOfComps);
    void makeMove(Competitor comps[],int nrOfComps);
    void showAll(Competitor comps[],int nrOfComps);
    int winner(Competitor comps[],int nrOfComps, int nrOfTwistPlaces);
    int main()
    {
        int nrOfTwistPlaces;
        int nrOfComps;
        int noWinner = -1;
        int laps = 0;
        cout<<"How many spinning places should there be? ";
        cin>>nrOfTwistPlaces;
        cout<<"How many competitors should there be? ";
        cin>>nrOfComps;
        Competitor * comps = new Competitor[nrOfComps];
        inputAndSetNames(comps, nrOfComps);
        do
        {
            laps++;
            cout<<"nSpin "<<laps<<":";
            makeTwist(comps, nrOfComps);
            makeMove(comps, nrOfComps);
            showAll(comps, nrOfComps);
        }while(noWinner == -1);
        delete [] comps;
        return 0;
    }

    void inputAndSetNames(Competitor comps[],int nrOfComps)
    {
        cout<<"Type in the names of the "<<nrOfComps<<" competitors:n";
        for(int i=0;i<nrOfComps;i++)
        {
            comps[i].setName();
        }
        cout<<"n";
    }
    void makeTwist(Competitor comps[],int nrOfComps)
    {
        for(int i=0;i<nrOfComps;i++)
        {
            comps[i].spin();
        }
    }
    void makeMove(Competitor comps[],int nrOfComps)
    {
        for(int i=0;i<nrOfComps;i++)
        {
            comps[i].move();
        }
    }
    void showAll(Competitor comps[],int nrOfComps)
    {
        for(int i=0;i<nrOfComps;i++)
        {
            comps[i].printResult();
        }
        cout<<"nn";
        system("pause");
    }
    int winner(Competitor comps[],int nrOfComps, int nrOfTwistPlaces)
    {
        int end = 0;
        int score = 0;
        for(int i=0;i<nrOfComps;i++)
        {
            score = comps[i].checkScore();
            if(score == nrOfTwistPlaces)
            {
                end = 1;
            }
            else end = -1;
        }
        return end;
    }

如果您看到任何其他错误,我会很感激。

您需要初始化竞争者对象 - 添加构造函数:

Competitor::Competitor(void)
{
    direction = 0;
    markedSpots = 0;
}

另外,您调用 rand(),然后使用%操作员进行" mod"函数 - rand()%1 0 。首先,当我们在这里时 - 为什么要添加0?

但是,这里的最大问题是您正在做%1 ,这将使其余的除以1。当然,这始终会导致0。

,您的主语句永远不会退出 - 您永远不会修改 Nowinner