我正在为Decimal和Binary基数系统之间的转换编写一个函数,这是我的原始代码:
void binary(int number)
{
vector<int> binary;
while (number == true)
{
binary.insert(binary.begin(), (number % 2) ? 1 : 0);
number /= 2;
}
for (int access = 0; access < binary.size(); access++)
cout << binary[access];
}
Run Code Online (Sandbox Code Playgroud)
然而,在我这样做之前它没有用:
while(number)
Run Code Online (Sandbox Code Playgroud)
怎么了?
while(number == true)
Run Code Online (Sandbox Code Playgroud)
这两种形式有什么区别?提前致谢.
c++ evaluation boolean-expression while-loop conditional-statements
我有两个数组,我有一个复杂的条件:new_arr<0 and old_arr>0
我使用非零但我收到一个错误.我的代码是这样的:
indices = nonzero(new_arr<0 and old_arr>0)
Run Code Online (Sandbox Code Playgroud)
我试过了:
indices = nonzero(new_arr<0) and nonzero(old_arr>0)
Run Code Online (Sandbox Code Playgroud)
但它给了我不正确的结果.
有没有办法解决?有没有办法从两个非零语句中获取公共索引.例如,如果:
indices1 = nonzero(new_arr<0)
indices2 = nonzero(old_arr>0)
Run Code Online (Sandbox Code Playgroud)
这两个指数将包含:
indices1 = array([0, 1, 3])
indices2 = array([2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
正确的结果是从这两个中得到共同的元素(在这种情况下,它将是元素3).像这样的东西:
result = common(indices1, indices2)
Run Code Online (Sandbox Code Playgroud) 我对代码风格有疑问:
假设我有一个包含一些信息的字符串(如"Information1"或"Information2").基于此我想用工厂创建对象.显然我可以这样写:
if(string.equals("Information1")){
Factory.createInformation1Object();
}
if(string.equals("Information2")){
Factory.createInformation2Object();
}
if(string.equals("Information3")){
Factory.createInformation3Object();
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否有更好(更漂亮)的方法来做到这一点.我真的很喜欢访问者模式的多重调度思路,但我无法看到一种方法可以轻松地应用这个特定的问题.
我是Haskell的初学者,在下一个街区遇到麻烦:
up_heap :: Num a => [a] -> [a] -> [a]
up_heap heap (h:t) =
let ppos = quot (length heap) 2 in
case ((ppos > 0) && ((heap !! ppos) > h)) of
True ->
let (upper, (p:lower)) = splitAt ppos heap in
up_heap upper (h:lower) ++ (p:t)
False ->
heap ++ h:t
Run Code Online (Sandbox Code Playgroud)
下一个错误:无法推断(Ord a)因使用">"而产生
怎么改进这个?
我有一张桌子
unam fnam
john alex
alex john
Run Code Online (Sandbox Code Playgroud)
如果unam'john'== fnam'alex'或unam'alex'== fname'john',我想要一个返回true的查询
我不知道如何在一个查询中执行此操作.我的代码
$re = mysql_query("SELECT 1 FROM tab WHERE unam='john' and fnam='alex' LIMIT 1");
$ir = mysql_query("SELECT 1 FROM tab WHERE unam='alex' and fnam='john' LIMIT 1");
if ((!(mysql_num_rows($re))) && (!(mysql_num_rows($ir)))) echo 'not exists';
Run Code Online (Sandbox Code Playgroud)
我已经执行了2个单独的查询(一个用于unam 'john' == fnam 'alex'和其他unam 'alex' == fname 'john'查询,如果两个查询都没有任何行,则它不存在回声.
我想可能是它可以优化到单个查询.任何人都可以帮助我.谢谢
我仍然在努力学习Haskell的语法,因为它与我之前见过的任何其他编程语言都不同.在大多数命令式编程语言中,可以创建如下的嵌套条件语句:
function thing1(x){
if(x > 2){
if(x < 5){
return 3;
}
else if(x < 10){
return 10;
}
else if(x >= 10){
return 6;
}
}
else{
return 4;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,经过多次尝试后,我仍然没有想出Haskell中的等效语法:我尝试在Haskell中创建一个等效函数,我得到了一个语法错误prog.hs:10:1: parse error on input main':
thing1 x =
if x > 2 then
if x < 5 then
3
else if x < 10 then
10
else if(x >= 10)
6
else
4
main = do
putStr(show(thing1 6))
Run Code Online (Sandbox Code Playgroud)
我不确定这里的语法有什么问题:是否有可能在Haskell中创建嵌套条件语句,就像在其他语言中一样?
只是想知道是否有人曾经遇到过这个问题.
我在一个项目(从另一个开发人员移交)中发现了一个看起来像这样的条件语句:
if (variableOne == true | variable2 == true) {
// Do something here
}
Run Code Online (Sandbox Code Playgroud)
它没有错误,所以似乎工作.但是,我和一位同事从未见过一个带有单个管道的OR语句|,只有2个||.
任何人都可以阐明这个谜团吗?
谢谢,詹姆斯
我试图根据条件从CTE中做出选择.
我已经为今天的期间宣布了一个变量(@PRD).它保留了我们目前所处期间的价值.
现在我想从一个表中做出选择,根据我们是否在今年上半年来限制返回的信息.
例如,我们处于第2期,所以我希望从我的CTE返回的所有内容都在PRD 1和5之间.如果我们在第6期(5之后),那么是的,我想要从表中返回所有内容.
这是我想要完成的伪代码:
SELECT
CASE
WHEN @PRD <= 5
THEN (SELECT * FROM DISPLAY WHERE PERIOD IN (1,2,3,4,5))
ELSE (SELECT * FROM DISPLAY)
END
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式.
请问我怎么能这样做?
谢谢x
编辑/更新:
更多的代码涉及CTE并且非常长.底线是让我说我有这个CTE
;WITH DISPLAY as (
select * from lots_of_things
)
SELECT * FROM DISPLAY
Run Code Online (Sandbox Code Playgroud)
在此CTE上进行常规选择后,它返回如下所示的数据:
PERIOD (INT) DEPARTMENT GROUP BUDGET
1 ENERGY HE 500
2 ENERGY HE 780
3 ENERGY HE 1500
4 ENERGY HE 4500
5 ENERGY HE 400
6 ENERGY HE 3500
7 ENERGY …Run Code Online (Sandbox Code Playgroud) 我有一些代码来保护我的页面不被iframed.
window.onload = function(){
try
{
if (window.parent && window.parent.location.hostname !== "app.herokuapp.com"){
throw new Error();
}
catch (e){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
它完全正常,直到我尝试添加更多值来比较主机名.我想添加自定义域名.我试过这个:
window.onload = function(){
try
{
if (window.parent && (window.parent.location.hostname !=="app.herokuapp.com"
|| window.parent.location.hostname !== "www.app.com"
|| window.parent.location.hostname !== "localhost")){
throw new Error();
}
catch (e){
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
这总是返回true,因此会抛出错误.我怎样才能做到这一点?除非主机名匹配这些字符串,否则我想抛出一个错误,无论如何都会抛出错误.我是新来的,会喜欢一些帮助!谢谢.
PS.我添加了"localhost",因为我希望能够在推送到heroku之前在本地测试它.
这个问题可能听起来微不足道但是,我知道每当一个函数开始执行时,堆栈中就会为函数的所有局部变量等创建堆栈帧,但是我无法理解当for循环开始执行或者内部的代码时会发生什么.如果条件开始执行.将它们视为在函数的堆栈框架内执行似乎是不合理的,因为它们有自己的范围,因此它们有自己的局部变量.但是,它们可以访问它们上面的函数的变量,因此这似乎意味着它们位于函数的堆栈框架内.
所以有人可以为我清楚这一点吗?
它们在被执行时实际位于内存中的哪个位置?
同样的问题出现在结构上,它们有自己的范围,它们不是指针,而只是更大的"盒子",包含整数,字符*等.
haskell ×2
javascript ×2
boolean ×1
c ×1
c++ ×1
evaluation ×1
if-statement ×1
java ×1
loops ×1
memory ×1
mysql ×1
numpy ×1
php ×1
python ×1
select ×1
string ×1
struct ×1
t-sql ×1
while-loop ×1