| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:有关函数模板问题,蒙了!
只看楼主 加入收藏
鸿鹄
Rank: 2
等 级:论坛游民
帖 子:51
专家分:10
注 册:2009-3-20
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:6 
有关函数模板问题,蒙了!
编写一个对具有n个元素的一维数组进行从大到小排序的函数模板。编制main()函数,通过使用不同类型的实参数组对它进行调用以验证其正确性。例如,可设计该函数模板的原型为:
template <class Type>
void sort (Type A[], int n);

不知怎么搞的,花了两三个钟,竟然一定对头都没有。瓶颈还是在不同类型的数组怎么输入上。我下面的做法,连函数都调用不了,不知有没有高手嘞,指点指点!本人是C++高级菜鸟,太菜了!

#include <iostream>
using namespace std;
template <class Type>
void sort (Type A[], int n)
{
  int i;
  Type temp;
   for (i=0;i<n;i++)
  {
      
      if(a[i]<a[i+1])
      {
          temp=a[i];
          a[i]=a[i+1];
          a[i+1]=temp;
      }
     

  }
  
  for(i=0;i<n;i++)
          cout<<a[i];

}
void main()
{
     int m,j;
     cout<<"输入数组维数:"<<endl;
     cin>>m;
     int b[10];
     for(j=0;j<m;j++)
         cin>>b[j];
   int sort (int b, int m);


}
搜索更多相关主题的帖子: 函数 模板 
2010-03-30 23:50
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:2 

1. main()中 int sort (int b, int m);-->sort (b, m);
2. sort()算法不对!

★★★★★为人民服务★★★★★
2010-03-31 08:09
鸿鹄
Rank: 2
等 级:论坛游民
帖 子:51
专家分:10
注 册:2009-3-20
收藏
得分:0 
改了还是不行,还是不懂
2010-03-31 12:16
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
#include <iostream>
using namespace std;
template <class Type>
void sort (Type a[], int n)
{
    int i,j;
    Type temp;
    for (i=0;i<n;i++)
    {
        for (j=i+1;j<n ;j++ )
        {
            if (a[i]<a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }

    for (i=0;i<n;i++)
        cout<<a[i]<<"  ";

}
void main()
{
    int m,j;
    cout<<"输入数组维数:"<<endl;
    cin>>m;
    int b[10];
    for (j=0;j<m;j++)
        cin>>b[j];
    sort (b, m);
}

★★★★★为人民服务★★★★★
2010-03-31 16:38
yyblackyy
Rank: 6Rank: 6
等 级:侠之大者
帖 子:98
专家分:457
注 册:2010-3-31
收藏
得分:2 
错误:
1:算法
2:
void sort (Type A[], int n)//这里是A[]
if(a[i]<a[i+1])
      {
          temp=a[i]; //这里是a[]
          a[i]=a[i+1];//这里是a[]

          a[i+1]=temp;//这里是a[]

      }
     

  }
  
  for(i=0;i<n;i++)
          cout<<a[i];//这里是a[]
都不一样的怎么排啊~~~~~~~
2010-03-31 17:40
月光321
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:55
专家分:124
注 册:2010-3-22
收藏
得分:2 
#include <iostream>
using namespace std;
template <class Type>
void sort (Type a[], int n)
{
  int i;
  Type temp;
   for (i=0;i<n-2;i++)
     for(int j=i+1;j<n-1;j++)
       if(a[i]<a[j])
      {
          temp=a[i];
          a[i]=a[j];
          a[j]=temp;
      }
     

 
  
  for(i=0;i<n;i++)
          cout<<a[i]<<endl;

}
void main()
{
     int m,j;
     cout<<"输入数组维数:"<<endl;
     cin>>m;
     cout<<"请输入这些数:\n";
     int *b=new int[m];
     for(j=0;j<m;j++)
         cin>>b[j];
    sort ( b,  m);


}
2010-03-31 17:48
鸿鹄
Rank: 2
等 级:论坛游民
帖 子:51
专家分:10
注 册:2009-3-20
收藏
得分:0 
算是明白了,可是总觉得不够完善,因为要事先给定不同类型的数组,初始化后才可调用模板。我希望能够实现不同类型数组手动输入,并根据类型调用模板进行排序的。
不知有没有谁会啊。我定义类来调用输入数组的代码,但没有成功!
2010-03-31 19:45
快速回复:有关函数模板问题,蒙了!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027051 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved