首页 > 电脑

求大神帮忙看看这段c++代码存在的问题(自知肯定很多错误,但是不知道怎么改),新人菜鸟呜呜

更新时间2019-08-08 06:35:06

#include <iostream>

#include <stack>

 

using namespace std;

// 定义全局变量

stack<int> *track;      // 缓冲轨道数组

int numberOfCars;       // 车厢数

int numberOfTracks;     // 缓冲轨道数

int rightcar;        // 在缓冲轨道中编号符合输出的车厢

int itsTrack;           // 停靠着rightcar的缓冲轨道

int outputorder[];

for(int i=0; i<10; i++)

{

if(i=0&&outputorder[i]=1)

{

outputorder[]={1,1,1,1,1,3,3,3,3,3};

}

if(i=0&&outputorder[i]=2)

{

if(i=3&&outputorder[i]=4)

{

outputorder[]={2,2,2,4,4,4,5,5,5,5};

}  

if(i=3&&outputorder[i]=6)

outputorder[]={2,2,2,6,6,6,6,7,7,7};

}

}

if(i=0&&outputorder[i]=5)

{

    outputorder[]={5,5,5,5,7,7,7,7,7,7};

}

if(i=0&&outputorder[i]=7)

{

outputorder[]={6,6,6,6,7,7,7,7,7,7};

}

}

 

int train;

if(outputorder[]={1,1,1,1,1,3,3,3,3,3})

{

train=1;

}

if(outputorder[]={2,2,2,4,4,4,5,5,5,5})

{

train=2;

}

if(outputorder[]={2,2,2,6,6,6,6,7,7,7})

{

train=3;

}

if(outputorder[]={5,5,5,5,7,7,7,7,7,7})

{

train=4;

}

if(outputorder[]={6,6,6,6,7,7,7,7,7,7})

{

train=5;

}

 

// 将rightcar从缓冲轨道移到出轨道

void outputFromHoldingTrack()

{

    // 从itsTrack中删除rightcar

    track[itsTrack].pop();

    cout<<"Move car "<< rightCar <<" from holding track "<<itsTrack<<" to output track"<<endl;

 

    // 检查所有栈的栈顶,寻找rightcar和它所属的栈itsTrack

    rightCar = numberOfCars + 2;

    for(int a=0;int i = 1; i <= numberOfTracks; i++)

    {

        if(!track[i].empty() && (track[i].top() =outputorder[i-1]))

        {

            rightCar = track[i].top();

            itsTrack = i;

        }

If(!track[i].empty() && (track[i].top()! =outputorder[i-1])

{

         track[i].pop();

         int a= track[i].top();

         int h

         if(h< numberOfTracks)

{

                 h=i+1;

}

         else

{

             h=1;

}

        track[h].push(a);

         h=i+1||i-1;h=< numberOfTracks;

    cout<<"Move car "<< rightCar <<" from holding track "<< i <<" to holding track "<< h <<endl;

        }

    }

}

 

// 将车厢c移到一个缓冲轨道。返回false,当且仅当没有可用的缓冲轨道

bool putInHoldingTrack(int c)

{

    // 为车厢c寻找最合适的缓冲轨道

    // 初始化

    int bestTrack = 0;      // 目前最合适的缓冲轨道

int bestTop = numberOfCars + 1;     // 取bestTrack中顶部的车厢

 

    // 扫描缓冲轨道

    for(int i = 1; i <= numberOfTracks; i++)

    {

                bestTrack = i;

    }

 

    // 没有可用的缓冲轨道

    if(bestTrack == 0)

        return false;

 

// 把车厢c移动到轨道bestTrack

  int topCar = track[i].top();

 

    track[bestTrack].push(c);

    cout<<"Move car "<<c<<" from input track to holding track "<<bestTrack<<endl;

 

    return true;

}

 

// 从初始顺序开始重排车厢,如果重排成功,返回true,否则返回false

bool railroad(int inputOrder[], int theNumberOfCars, int theNumberOfTracks)

{

    numberOfCars = theNumberOfCars;

    numberOfTracks = theNumberOfTracks;

 

    // 创建用于缓冲轨道的栈

    track = new stack<int> [numberOfTracks + 1];

    rightCar = numberOfCars + 1;     // 缓冲轨道中无车厢

 

    // 重排车厢

    for(int j= 1; j<= numberOfCars; j++; int i= 1; i<= 10; i++)

    {

        if(inputOrder[j-1] ==outputorder[i-1])

        {

            // 将车厢inputOrder[i-1]直接移动出轨道

            cout<<"Move car "<<inputOrder[i-1]<<" from input track to output tarck"<<endl;

            // 从缓冲轨道移到出轨道

if(i==10)

        {

         cout<<"Move train"<<train<<" from output tarck"<<endl;

            // 移除出轨道的列车

            cout<<"Move car "<<inputOrder[i-1]<<" from input track to output tarck"<<endl;

 

            while(rightCar == outputorder[i-1])

            {

                outputFromHoldingTrack();

                i++;

 

            }

        }

        else

        {

            // 将车厢inputOrder[i-1]移到一个缓冲轨道

            if(!putInHoldingTrack(inputOrder[i-1]))

                return false;

        }

    }

 

    return true;

}

 

int main()

{

    int inputOrder[] = {1, 7, 7, 2, 5, 4, 3, 3, 6, 1, 7, 4, 2, 6, 2, 7, 4, 7, 4, 2, 7, 6, 5, 5, 1, 1, 6, 5, 2, 2, 3, 3, 4, 5, 1, 1, 7, 7, 7, 3, 5, 3, 3, 7, 6, 6, 1, 1, 2, 5, 3, 5, 2, 4, 1, 2, 5, 6, 3, 3, 2, 1, 4, 5, 5, 2, 5, 4, 4, 5, 7, 7, 4, 5, 1, 3, 2, 7, 5, 5, 2, 2, 6, 5, 7, 7, 7, 6, 2, 5, 2, 3, 3, 2, 7, 6, 6, 4, 5, 1, 6, 3, 2, 7, 3, 1, 5, 4, 1, 1};

    if(!railroad(inputOrder, 9, 3))

        cout<<"无法重排!"<<endl;

    return 0;


你前面的一段程序完全不是C++的语法,且无法看出你要做什么

具体的

1。

int outputorder[]; //C++不支持没有下标的数组定义,它必须有常量下标的,如

int outputorder[100];

2。

for(int i=0; i<10; i++) //C++的循环/判断语句必须在函数内,你前面要加函数定义

3。

if(i=0&&outputorder[i]=1) //c++的相等比较不能用=,要用==的

4。

outputorder[]={1,1,1,1,1,3,3,3,3,3};

C++不支持数组多个成员赋值的,它只能用于初始化(你的程序是PYTHON的?)

5。C++不支持数组直接判断的

if(outputorder[]={5,5,5,5,7,7,7,7,7,7}) //C++不存在这样的语法的

后面的一堆都是这类问题

也可以说,你的程序根本不是C++的,且不能以C++语法理解所以无法修改(无法了解你程序 的算法)

相关标签:大神

上一篇:GP-ProEX报警代码咋样输入简体字

下一篇:苹果XSMAX安装完APNCarrierSettings以后怎么设置新的接入点??