zoukankan      html  css  js  c++  java
  • C++程序设计POJ》《WEEK7 输入输出和模板》《编程作业》

    题目网址:http://cxsjsxmooc.openjudge.cn/2018t3springw7/

    1:简单的SumArray

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    填写模板 PrintArray,使得程序输出结果是: TomJackMaryJohn 10 不得编写SumArray函数

    #include <iostream>
    #include <string>
    using namespace std;
    template <class T>
    T SumArray(
    // 在此处补充你的代码
    }
    int main() {
    	string array[4] = { "Tom","Jack","Mary","John"};
    	cout << SumArray(array,array+4) << endl;
    	int a[4] = { 1, 2, 3, 4};  //提示:1+2+3+4 = 10
    	cout << SumArray(a,a+4) << endl;
    	return 0;
    }
    输入
    输出
    TomJackMaryJohn
    10
    样例输入
    样例输出
    TomJackMaryJohn
    10

    /*
    简单的SumArray
    */
    #include <iostream>
    #include <string>
    using namespace std;
    template <class T>
    T SumArray(T* a,T* b)
    {
        T tmp=*a;
        for (T* i=a+1;i<b;i++)
        {
            tmp += *i;
        }
    
        return tmp;
        // 在此处补充你的代码
    }
    int main() {
        string array[4] = { "Tom","Jack","Mary","John" };
        cout << SumArray(array, array + 4) << endl;
        int a[4] = { 1, 2, 3, 4 };  //提示:1+2+3+4 = 10
        cout << SumArray(a, a + 4) << endl;
        return 0;
    }

    2:简单的foreach

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    编写MyForeach模板,使程序按要求输出 不得编写 MyForeach函数

    #include <iostream>
    #include <string>
    using namespace std;
    // 在此处补充你的代码
    void Print(string s)
    {
    	cout << s;
    }
    void Inc(int & n)
    {
    	++ n;
    }
    string array[100];
    int a[100];
    int main() {
    	int m,n;
    	while(cin >> m >> n) {
    		for(int i = 0;i < m; ++i)
    			cin >> array[i];
    		for(int j = 0; j < n; ++j)
    			cin >> a[j];
    		MyForeach(array,array+m,Print);		 
    		cout << endl;
    		MyForeach(a,a+n,Inc);		 
    		for(int i = 0;i < n; ++i)
    			cout << a[i] << ",";
    		cout << endl;
    	}
    	return 0;
    }
    输入
    多组数据

    每组数据第一行是两个整数 m 和 n ,都不超过 50

    第二行是m个不带空格的字符串
    第三行是 n个整数
    输出
    对每组数据
    第一行输出所有输入字符串连在一起的结果
    第二行输出输入中的每个整数加1的结果
    样例输入
    3 4
    Tom Mike Jack
    1 2 3 4
    1 2
    Peking
    100 200
    样例输出
    TomMikeJack
    2,3,4,5,
    Peking
    101,201,


    /*
    2:简单的foreach
    */
    #include <iostream>
    #include <string>
    using namespace std;
    template<class T1, class T2>
    // 函数指针 void MyForeach(T1 begin, T1 end, T2 op) { for (T1 i = begin; i<end; i++) { op(*i); } } void Print(string s) { cout << s; } void Inc(int & n) { ++n; } string arrayNEW[100]; int a[100]; int main() { int m, n; while (cin >> m >> n) { for (int i = 0; i < m; ++i) cin >> arrayNEW[i]; for (int j = 0; j < n; ++j) cin >> a[j]; MyForeach(arrayNEW, arrayNEW + m, Print); cout << endl; MyForeach(a, a + n, Inc); for (int i = 0; i < n; ++i) cout << a[i] << ","; cout << endl; } return 0; } /* 3 4 Tom Mike Jack 1 2 3 4 1 2 Peking 100 200 */ /* 样例输出 TomMikeJack 2,3,4,5, Peking 101,201, */

    3:简单的Filter

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    编写Filter模板,使得程序产生指定输出 不得编写 Filter函数

    #include <iostream>
    #include <string>
    using namespace std;
    // 在此处补充你的代码
    bool LargerThan2(int n)
    {
    	return n > 2;
    }
    bool LongerThan3(string s) 
    {
    	return s.length() > 3;
    }
    
    string as1[5] = {"Tom","Mike","Jack","Ted","Lucy"};
    string as2[5];
    int  a1[5] = { 1,2,3,4,5};
    int a2[5];
    int main() {
    	string * p = Filter(as1,as1+5,as2,LongerThan3);
    	for(int i = 0;i < p - as2; ++i)
    		cout << as2[i];
    	cout << endl; 
    	int * p2 = Filter(a1,a1+5,a2,LargerThan2);
    	for(int i = 0;i < p2-a2; ++i)
    		cout << a2[i] << ",";
    	return 0;
    }
    输入
    输出
    MikeJackLucy
    3,4,5,
    样例输入
    样例输出
    MikeJackLucy
    3,4,5,
    /*
    【3:简单的Filter】
    */
    
    #include <iostream>
    #include <string>
    using namespace std;
    // 在此处补充你的代码
    template<class T1,class T2>
    T1 Filter(T1 begin, T1 end, T1 arr, T2 op)
    {
        int index = 0;
        for (T1 i = begin; i < end; i++)
        {
            if (op(*i))
            {
                arr[index++] = *i;
            }
        }
        return (arr + index);
    }
    bool LargerThan2(int n)
    {
        return n > 2;
    }
    bool LongerThan3(string s)
    {
        return s.length() > 3;
    }
    
    string as1[5] = { "Tom","Mike","Jack","Ted","Lucy" };
    string as2[5];
    int  a1[5] = { 1,2,3,4,5 };
    int a2[5];
    int main() {
        string * p = Filter(as1, as1 + 5, as2, LongerThan3);
        for (int i = 0; i < p - as2; ++i)
            cout << as2[i];
        cout << endl;
        int * p2 = Filter(a1, a1 + 5, a2, LargerThan2);
        for (int i = 0; i < p2 - a2; ++i)
            cout << a2[i] << ",";
        return 0;
    }

    4:你真的搞清楚为啥 while(cin >> n) 能成立了吗?

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    读入两个整数,输出两个整数 ,直到碰到-1

    #include <iostream>
    using namespace std;
    class MyCin
    {
    // 在此处补充你的代码
    };
    int main()
    {
        MyCin m;
        int n1,n2;
        while( m >> n1 >> n2) 
            cout  << n1 << " " << n2 << endl;
        return 0;
    }
    输入
    多组数据,每组一行,是两个整数
    输出
    对每组数据,原样输出 
    当碰到输入中出现-1 时,程序结束 
    输入中保证会有 -1
    样例输入
    12 44
    344 555
    -1
    2 3
    样例输出
    12 44
    344 555
    
    
    /*
    4:你真的搞清楚为啥 while(cin >> n) 能成立了吗?
    */
    
    #include <iostream>
    using namespace std;
    class MyCin
    {
        // 在此处补充你的代码
    public:
        int flag;
        //MyCin() :flag(0) {}
        istream& operator>>(int& x) // 为什么必须是引用???
        {
            cin >> x;
            if (x == -1)
            {
                exit(0);
            }
            return cin;
        }
    };
    int main()
    {
        MyCin m;
        int n1, n2;
        while (m >> n1 >> n2)
            cout << n1 << " " << n2 << endl;
        return 0;
    }












  • 相关阅读:
    GitHub 源码,Framework 框架
    转int啥啥啥的
    查看apk签名 和 keystore 的信息
    一次apk打开时报内存溢出错误,故写下内存溢出的各种原因和解决方法
    客户端传值里面包含URL特殊字符的应对方法
    Linux全硬盘搜索文件名是xxxxx的命令
    pythonmysql运行报错解决过程中遇到的其中一个报错解决文章来源
    linux查看硬盘占用情况
    Linux使用nginx反向代理。可实现域名指向特定端口
    Linux下使用yum安装软件命令
  • 原文地址:https://www.cnblogs.com/focus-z/p/11173356.html
Copyright © 2011-2022 走看看