整天都在努力,无法弄清楚我错过了什么。我不想诉诸于此寻求帮助,但我必须这样做。
练习应该通过引用获取三个int参数,并将它们的值按升序排序,以便第一个参数具有最低值,第二个参数具有中间值,第三个参数具有最高值。
代码编译正常,但数字不符合规定。它一起跳过我的函数,只是直接从main显示变量。
SELECT id, product
FROM mytable AS t1
WHERE id = 0 AND NOT EXISTS (SELECT 1
FROM mytable AS t2
WHERE t1.product = t2.product AND t2.id <> 0)
答案 0 :(得分:2)
你的功能过于复杂。这也是错误的,因为至少它没有考虑到变量可以彼此相等。
它可以看起来如下所示,因为它在本演示程序中显示。它使用冒泡排序方法。
class Enemy(Scatter):
intv = NumericProperty(0/10.)
gravity = NumericProperty(0.01)
velocity = NumericProperty()
imgp = StringProperty('enemy.png')
def __init__(self, **kwargs):
super(Enemy, self).__init__(**kwargs)
self.My_Clock = Clock# declaring the clock for later usage
self.My_Clock.schedule_interval(self.Update, self.intv)
def Update(self, *args):
self.x -= 1
if self.y > 0:
self.velocity += self.gravity
self.y -= self.velocity
else:
if self.velocity > 0.5:
print 'death'
class level(Widget):
zicie = NumericProperty(10)# the variable containg the life of the player
zloto = NumericProperty(0)
e_killed = NumericProperty(0)
intv1 = NumericProperty(2/1.)
pu = BooleanProperty(True)
def __init__(self, **kwargs):
super(level, self).__init__(**kwargs)
self.l_Clock = Clock
def Update(self, *args):# this funktion generates enemys
pass
#obj = Root.ids.level
#obj.add_widget(Enemy(pos=(500,0))) # the widget enemy is added here
Root = Builder.load_string('''
FloatLayout:
level:
Enemy:
pos: 500,0
<Enemy>:
Image:
pos: root.pos
source: 'enemy.png'
''')
程序输出
#include <iostream>
void smallSort( int &valu1, int &valu2, int &valu3 )
{
if ( valu2 < valu1 )
{
int tmp = valu1;
valu1 = valu2;
valu2 = tmp;
}
if ( valu3 < valu2 )
{
int tmp = valu2;
valu2 = valu3;
valu3 = tmp;
}
if ( valu2 < valu1 )
{
int tmp = valu1;
valu1 = valu2;
valu2 = tmp;
}
}
int main()
{
int a = 2, b = 3, c = 1;
std::cout << "a = " << a << ", b = " << b << ", c = " << c << std::endl;
smallSort( a, b, c );
std::cout << "a = " << a << ", b = " << b << ", c = " << c << std::endl;
}
也代替像这样的代码块
a = 2, b = 3, c = 1
a = 1, b = 2, c = 3
您可以使用标准函数 if ( valu2 < valu1 )
{
int tmp = valu1;
valu1 = valu2;
valu2 = tmp;
}
。例如
std::swap
在这种情况下,函数会像
一样 if ( valu2 < valu1 ) std::swap( valu2, valu1 );
答案 1 :(得分:0)
我认为可以说你已经过度复杂了,但没关系。
我认为如果你一次只比较两个整数,它可能会帮助你压缩代码,这样你就不必硬编码那么多的逻辑。 我快速谷歌搜索源代码,发现:https://codereview.stackexchange.com/questions/64758/sort-three-input-values-by-order 请务必查看该帖子上的评论,因为他们也应该帮助您。
此外,它非常容易找到谷歌的源代码,它会帮助你很多,特别是当你还在学习的时候!
答案 2 :(得分:0)
C ++ 11替代
#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
int main() {
array<int, 3> arr = { 100, 25, 20 };
sort(arr.begin(), arr.end());
for (int & i : arr) cout << i << endl;
}
<强>输出强>
20
25
100