类似的程序在java和c++中输出不同
Similar program in java and c++ different output
我创建了一个程序来模拟一个谜题。其中n个开关串联连接(第一个开关的输出连接到第二个开关的输入)。第一个开关始终具有输入电源,并且最初所有开关都处于断开状态。对于每一次迭代,若开关有输入功率,它就会切换状态。若开关有输入电源并且其状态为接通,则产生输出。最后有一个灯泡,我们必须找到它是否在给定的迭代次数下发光。我在数学上做到了这一点,这一次我试图刺激。
考虑2个交换机的情况
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++代码
#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;
}
这是java代码
public class turn {
public static void main(String args[]){
int n=2;
int taps=4;
boolean ans=false;
boolean state[][]=new boolean[n][taps];
boolean out[][]=new boolean[n][taps];
boolean power=true;
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];
}
System.out.println(ans);
}
if(ans == true)
System.out.println("ON");
else
System.out.println("OFF");
}
}
这可能是
out[0][j]=(power && state[0][j]);
&&
是一个逻辑比较,因此如果power
和state[0][j]
是true
,则此代码返回true。你可能想在这里使用位运算符&
这里:
out[i+1][j]= (state[i+1][j] && out[i][j]);
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 为什么rk4.do_step不输出C++中的初始条件
- 输出没有重复元素的动态数组(收缩数组)C++
- 如何根据单词在文本中出现的概率输出单词