WUST Online Judge - 1387: Vector类模版改错

1387: Vector类模版改错

Time Limit: 1 Sec  Memory Limit: 65535 MB   64bit IO Format: %lld
Submitted: 1118  Accepted: 680
[Submit][Status][Web Board]

Description

下面程序段有5行有问题,请找出错误所在行,并改正。更正后的程序段输出结果为:

0149162536496481

 

#include<iostream>
using namespace std;
template<class T,int N=100>
class Vector
{
    T vec[N];
    public:
    void set(int pos,T val);
    T get(int pos);
}
template<class T>
void Vector<T>::set(int pos,T val)
{
    vec[pos]=val;
}
template<class T>
double Vector<T>::get(int pos)
{
    return vec[pos];
}
int main()
{
    Vector<double,10>v;
    int i=0;
    double d=0.0;
    for(i=0;i<10;i++)
        v.set(i,double(i*i));
    for(i=0;i<10;i++)
        cout<<v.get(i);
    cout<<endl;
    return 0;
}

就这个题而言, 我推荐两种方法

 

第一种

由于这个题, 只有一组数据, 直接输出就好。 这个方法比较取巧, 但确实很简单。

1 #include<cstdio>
2 int main(){
3     printf("0149162536496481\n");
4     return 0;
5 }
View Code
第二种

第二种就是老老实实的改

 1 #include<iostream>
 2 using namespace std;
 3 
 4 template<class T,int N=100>
 5 class Vector
 6 {
 7     T vec[N];
 8     public:
 9     void set(int pos,T val);
10     T get(int pos);
11 };                                 //原代码此处没有分号, 记得加上
12 
13 template<class T, int N>           //参数少了一个, 把N加上, 只需要初始化一次就好
14 void Vector<T, N>::set(int pos, T val)//同样少了一个N
15 {
16     vec[pos]=val;
17 }
18 
19 template<class T, int N>            //还是少了一个N, 这就是这个坑的地方了, 你以为下面是对的, 参考下面改上面, 错了
20                                     //参考上面改下面, 还是错的, 对于新手, 简直要命<_<!!!
21 T Vector<T, N>::get(int pos)        //这里要和函数声明时的一样, 把返回值改一下就好
22 {
23     return vec[pos];
24 }
25 
26 int main()
27 {
28     Vector<double,10>v;
29     int i=0;
30     for(i=0;i<10;i++)
31         v.set(i,double(i*i));
32     for(i=0;i<10;i++)
33         cout<<v.get(i);
34     cout<<endl;
35     return 0;
36 }
View Code

或者你也可以这样, 直接把函数写在类里面, 如果是学习新知识则推荐上一种, 如果知识点熟练的话, 推荐第一种。

 1 #include<iostream>
 2 using namespace std;
 3 
 4 template<class T,int N=100>
 5 class Vector
 6 {
 7     T vec[N];
 8     public:
 9     void set(int pos,T val){
10         vec[pos]=val;
11     }
12     T get(int pos){
13         return vec[pos];
14     }
15 };
16 
17 int main()
18 {
19     Vector<double,10>v;
20     int i=0;
21     for(i=0;i<10;i++)
22         v.set(i,double(i*i));
23     for(i=0;i<10;i++)
24         cout<<v.get(i);
25     cout<<endl;
26     return 0;
27 }
View Code
扫描二维码关注公众号,回复: 1011331 查看本文章

猜你喜欢

转载自www.cnblogs.com/123zhh-helloworld/p/9084280.html
今日推荐