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

小程序,小疑问,求解

yss28 发布于 2013-09-08 13:31, 472 次点击
程序代码:
/*-----------------------------------------------------
试编写一个模板函数,用来测试数组 a中的元素是否按升序排列(即 a [ i ]≤a [ i + 1 ] ,其中0≤
i<n - 1) 。如果不是,函数应返回f a l s e,否则应返回t r u e。上机测试该函数。
--------------------------------------------------------------
*/
#include <iostream>
using namespace std;
template <class T>
bool Arrange(T (&s)[])
{
    int i = 0, n = 8;
    for (; i < n-1; i++)
    {
        if (s[i] <= s[i+1])
            continue;
        else
            return cout << "False" << endl;
    }
    return cout << "True" << endl;
}
int main()
{
    int a[] = {1, 22, 33, 42, 15, 54, 11, 35};
    Arrange(a);    // 这里该怎么写,才能使程序运行正确?
    return 0;
}

/*
这个是正确的程序
[color=#0000FF]#include
<iostream>
using namespace std;
template <class T>
bool Arrange(T s[])
{
    int i = 0, n = 8;
    for (; i < n-1; i++)
    {
        if (s[i] <= s[i+1])
            continue;
        else
            return cout << "False" << endl;
    }
    return cout << "True" << endl;
}
int main()
{
    int a[8] = {1, 22, 33, 42, 15, 54, 11, 35};
    Arrange(a);
    return 0;
}
[/color]*/
3 回复
#2
peach54602013-09-08 14:43
你都有正确的代码了,那你在问什么?
#3
默默潜水Y2013-09-09 00:33
发短信了。
#4
rjsp2013-09-09 09:44
程序代码:
#include <iostream>

template<class T, size_t N>
bool Arrange( T (&s)[N] )
{
    for( size_t i=0; i<N-1; ++i )
    {
        if( s[i] > s[i+1] )
            return false;
    }
    return true;
}

using namespace std;

int main()
{
    int a[] = { 1, 22, 33, 42, 15, 54, 11, 35 };
    cout << boolalpha << Arrange(a) << endl;

    int b[] = { 1, 22, 33, 42, 54 };
    cout << boolalpha << Arrange(b) << endl;

    return 0;
}
1