注册 登录
编程论坛 C++教室

请教两个个编程问题

xhzy0205 发布于 2008-08-13 09:02, 760 次点击
如果定义一个String型二维数组U[L][L](L为常数),那么
    问题1:如何获得二维数组的两个维的大小(二维数组中实际维数<L);
    问题2:加入该二维数组中有两个元素U[1][1]=“0101”,U[1][2]=“1011”。如何编程实现这两个元素
   (字符串)的逻辑加运算,即0101+1011=1111(“+”为逻辑加运算)
10 回复
#2
xlh52252008-08-13 09:48
问题1:
  行的大小: sizeof(U)/sizeof(U[0])
  列的大小: sizeof(U[0])/sizeof(String)
问题2:
  你可以用两个数组来存字符串,自己模拟实现逻辑加运算,很简单.
#3
xlh52252008-08-13 09:50
当然,如果数组作为函数的参数传递了,是不能这要做的,因为数组作为函数参数时,会退化为一般指针,这时你需要显示的传递数组大小.
#4
xhzy02052008-08-13 09:52
我想对任意两个二维数组的元素进行用位运算(|),但是好像不行!不知道您说的方法是什么样的,请明示!
#5
xhzy02052008-08-13 09:57
for(i=1;i<=m;i++)
      {
          for(j=i+1;j<=m;j++)
          {
              //如果满足满足ri+rj=rj
              result=U[i][j]|U[i][j+1];//按位“或”运算,不知道怎么写!

              if(result==U[i][j+1])
              {
                  result="*";//将U[i][j+1]置成*
                  U[i][j+1]=result;
              }

          }
      }
#6
xhzy02052008-08-13 10:00
报错:
binary '|' : 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' does not define this operator or a conversion to a type acceptable to
 the predefined operator
#7
xlh52252008-08-13 10:02
我这里,只是说明可能的一种实现:
就你的例子来说,计算  0101+1011    //( =1111(“+”为逻辑加运算))
可以用三个数组,a1内容为0101,a2内容为1011,a3表示结果
自己按照逻辑加运算的规则进行逻辑加,结果存于a3中,不知道清楚没有?
#8
xlh52252008-08-13 10:03
请注意,C++中并没有逻辑加法运算符"|" !!如果你要用,请自己实现它!看来你C++基础东西都很多没懂啊...
#9
xlh52252008-08-13 10:05
上面说的没有,是针对你的数组!不是针对数,如果是两个数,当然可以用"|"运算符!
如:
int a=123;
int b=234;
a |= b;
等等
#10
writalnaie2008-08-13 22:59
“|”的结果应该是对地址按位运算吧
#11
zyq198211232008-08-14 19:24
hehe
呵呵
1