我有三个int数组
int a[3] = {2,25,2015} //Date : d,mm,yyyy
int b[3] = {4,15,2016}
int c[3] = {7,10,2017}
我想检查b是否介于a和c
之间答案 0 :(得分:4)
以下小程序完全符合您的要求。注意:您可以轻松使用smaller
函数创建所有布尔运算符(<=, >=, ==, !=, >
)
#include <stdio.h>
typedef int Date[3];
int smaller(Date a, Date b)
{
if (a[2] < b[2]) return 1; // compare years
if (a[2] == b[2] && a[1] < b[1]) return 1; // compare months - but make sure years are equal
if (a[2] == b[2] && a[1] == b[1] && a[0] < b[0]) return 1; // compare days but make sure years and months are equal
return 0;
}
int main()
{
Date a = {2,25,2015}; //Date : d,mm,yyyy
Date b = {4,15,2016};
Date c = {7,10,2017};
printf("%s\n", (smaller(a, b) && smaller(b, c)) ? "b between a and c" : "b is not between a and c");
}
typedef
是为了让代码更容易阅读。你还可以
答案 1 :(得分:0)
必须将数组b的每个值与数组a和c的每个对应值进行比较。您可以尝试以下方法:
@helper createSubmenu(IEnumerable<IPublishedContent> nodes, int? parentId)
{
if (nodes.Count() > 0)
{
<ul>
@foreach (var node in nodes)
{
var childrenItems = node.Children.Where("UmbracoNaviHide == false");
<li class="@(CurrentPage.Id == node.Id ? "sel" : null)">
<a href="@node.Url"><h5>@node.GetPropertyValue("menuName")</h5></a>
@createSubmenu(childrenItems, node.Id)
</li>
}
</ul>
}
}
但是,如果您展示了您尝试过的代码会更好,以便我们可以帮助您修改它。
答案 2 :(得分:0)
// Assuming between means not inclusive..
bool isDateWithinRange = false;
for(i=2;i>=0;i--)
{
if(a[i]<b[i] && b[i]<c[i]){
isDateWithinRange = true;
break;
}
if(a[i]>b[i] || b[i]>c[i])
break;
}
答案 3 :(得分:0)
这是一种与我们使用的心态不同的问题。如果我们将日期转换为其他形式(即自某个参考点以来经过的日期或经过的时间),则比较日期会更容易。
在您的情况下,我看到两个选项:
答案 4 :(得分:-1)
尝试类似
的内容 if(((a[2] <= b[2]) && (c[2] >= b[2])) || ((a[2] >= b[2]) && (c[2] <= b[2])))
then
//check month and day
else
false;