Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java和c+中的类似程序+;不同产量_Java_C++ - Fatal编程技术网

java和c+中的类似程序+;不同产量

java和c+中的类似程序+;不同产量,java,c++,Java,C++,我创建了一个程序来模拟一个谜题。 其中n个开关串联连接(第一个开关的输出连接到第二个开关的输入)。 第一个开关始终有输入电源,最初所有开关都处于关闭状态。 对于每个迭代,若开关有输入电源,它将切换状态。 若开关有输入电源且其状态为on,则产生输出。 在末端有一个灯泡,我们必须找出它是否在给定的迭代次数下发光。 我用数学的方法做了这件事,这次我试着去刺激 考虑两个开关的情况 power Switch1 power Switch2 power Bulb ON OFF

我创建了一个程序来模拟一个谜题。 其中n个开关串联连接(第一个开关的输出连接到第二个开关的输入)。 第一个开关始终有输入电源,最初所有开关都处于关闭状态。 对于每个迭代,若开关有输入电源,它将切换状态。 若开关有输入电源且其状态为on,则产生输出。 在末端有一个灯泡,我们必须找出它是否在给定的迭代次数下发光。 我用数学的方法做了这件事,这次我试着去刺激

考虑两个开关的情况

power    Switch1  power   Switch2  power   Bulb
ON         OFF     OFF     OFF     OFF     OFF
ON         ON      ON      OFF     OFF     OFF
ON         OFF     OFF     ON      OFF     OFF
ON         ON      ON      ON      ON      ON 
注:在第三次迭代中,开关2的状态发生了变化,因为它有电源输入

我的代码在java中给出正确的输出,但是C++中出错 下面是C++代码< /p>
#include<iostream>

using namespace std;

int main(){
        int n=2;
        int taps=4;
        bool ans=false;
        bool state[n][taps];//={0};//=new boolean[n][taps];
        bool out[n][taps];//={0};//=new boolean[n][taps];
        bool power=true;
        for(int j=0;j<taps;j++){
            for(int i=0;i<n;i++){
                state[i][j]=false;
                out[i][j]=false;
            }
        }

        for(int j=0;j<taps;j++){
            for(int i=0;i<n-1;i++){
                if(j>0)
                    state[0][j] = !state[0][j-1];

                out[0][j]=(power && state[0][j]);

                if(j>0){    
                    if (out[i][j]==true){
                        if (out[i][j-1]==false)
                            state[i+1][j]=state[i+1][j-1];
                        else
                            state[i+1][j]= !state[i+1][j-1];
                    }else if(out[i][j]==false){
                        if(out[i][j-1]==true)
                            state[i+1][j]= !state[i+1][j-1];
                        else
                            state[i+1][j] = state[i+1][j-1];
                    }   
                }else
                    state[i+1][j]=false;
                out[i+1][j]= (state[i+1][j] && out[i][j]);
                ans=out[i+1][j];
            }
            cout<<ans<<endl;    
        }
        if(ans == true)
            cout<<"ON"<<endl;
        else
            cout<<"OFF"<<endl;

}
#包括
使用名称空间std;
int main(){
int n=2;
int-taps=4;
布尔ans=假;
布尔状态[n][taps];//={0};//=新布尔值[n][taps];
bool out[n][taps];//={0};//=new boolean[n][taps];
布尔功率=真;

对于(int j=0;j而言,这可能是其中之一

out[0][j]=(power && state[0][j]);
&
是一种逻辑比较,因此如果
power
state[0][j]
true
,则此代码返回true。您可能希望在此处使用位运算符
&

在这里:

out[i+1][j]= (state[i+1][j] && out[i][j]);

我的上帝,它满是括号!<代码> BoOL状态[n] [TAPS]; C++中的NOP。C++中的输出是什么?代码中的哪一点数据开始不同?(是的,我很懒惰)做了文件比较:&是错误的两倍(只有两个发生的& &)
out[i+1][j]= (state[i+1][j] && out[i][j]);