实验12:Problem H: 整型数组运算符重载

Home Web Board ProblemSet Standing Status Statistics

Problem H: 整型数组运算符重载

Problem H: 整型数组运算符重载

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 643  Solved: 401
[Submit][Status][Web Board]

Description

定义Array类:

1.拥有数据成员int length和int *mems,分别是数组中元素的个数和元素列表。

2. 无参构造函数,将mems设置为NULL,length为0。

3. 重载==运算符,用于判断两个Array对象是否相等。相等包括两种情况:(1)两个对象是同一个对象,即它们拥有相同的地址(记住: this指针指向当前对象,是当前对象的地址);(2)两个对象的length相同,且mems中对应元素的值相同。其他情况均为不相等。

4. 利用友元函数重载<<和>>运算符。输入、输出格式见下。

Input

输入分多行。

第一行是一个正整数M,表示有M个数组。

每个数组是一行,其中第一个非负整数N表示该数组的元素个数,之后有N个整数。

Output

输出有M行。

第一行输出即为第一个数组。

自第二行开始,首先输出对应的数组元素(两两之间用空格隔开,首尾不能有空格),如果数组为空,则不输出元素。之后根据这个数组与上个数组是否相同,输出“unequal to above.”(不相等)和“equal to above”(相等)。

Sample Input

5
3 1 2 3
3 1 2 3
0
7 1 2 3 4 5 6 7
7 1 2 3 4 5 6 8

Sample Output

1 2 3
1 2 3 equal to above.
unequal to above.
1 2 3 4 5 6 7 unequal to above.
1 2 3 4 5 6 8 unequal to above.

HINT

Append Code

append.cc,

[Submit][Status][Web Board]

HOME
Back


-->

???<中文?????English???All Copyright Reserved 2010-2011SDUSTOJTEAMGPL2.02003-2011HUSTOJ ProjectTEAM
Anything about the Problems, Please Contact Admin:
admin

#include<iostream>
#include<cmath>
#define dd delete
using namespace std;
class Array{
public:
    int length;
    int *mems;
    Array():length(0),mems(NULL){}
    int operator==(Array &a)
    {
        int i;
        for(i=0;i<length;i++)
        {
            if(mems[i]!=a.mems[i])
                break;
        }
        if(this==&a)
            return 1;
        else if(a.length==length&&length==i)
            return 1;
        else
            return 0;
    }
    ~Array(){if(mems!=NULL) dd []mems;}
    friend istream &operator>>(istream &is,Array &a);
    friend ostream &operator<<(ostream &os,Array &a);

};
istream &operator>>(istream &is,Array &a)
{
    is>>a.length;
    a.mems = new int[a.length];
    for(int i=0;i<a.length;i++){
        is>>a.mems[i];
    }
    return is;
}
ostream &operator<<(ostream &os,Array &a)
{
    for(int i=0;i<a.length;i++)
        if(i!=a.length-1)
            os<<a.mems[i]<<" ";
        else
            os<<a.mems[i];
        return os;
}
int main()
{
    int cases;
    cin>>cases;
    Array arraies[cases];
    for (int i = 0; i < cases; i++)
    {
        cin>>arraies[i];
    }
    cout<<arraies[0]<<endl;
    for (int i = 1; i < cases; i++)
    {
        if (arraies[i] == arraies[i - 1])
        {
            cout<<arraies[i]<<" "<<"equal to above."<<endl;
        }
        else
        {
            cout<<arraies[i]<<" "<<"unequal to above."<<endl;
        }
    }
    return 0;
}
时间: 2024-10-06 01:41:46

实验12:Problem H: 整型数组运算符重载的相关文章

Problem D: 整型数组运算符重载

Description 定义Array类: 1.拥有数据成员int length和int *mems,分别是数组中元素的个数和元素列表. 2. 无参构造函数,将mems设置为NULL,length为0. 3. 重载==运算符,用于判断两个Array对象是否相等.相等包括两种情况:(1)两个对象是同一个对象,即它们拥有相同的地址(记住: this指针指向当前对象,是当前对象的地址):(2)两个对象的length相同,且mems中对应元素的值相同.其他情况均为不相等. 4. 利用友元函数重载<<和

复习一下整型数组,字符数组,整型指针数组,字符指针数组,整型数组指针,字符数组指针

20:52:01 2019-12-31 整型数组 int a[10];字符数组 char b[10]; _______________________整型指针数组 int *p[10]; |__|__|__|__|__|__|__|__|__| 每个格子里存的是一个指针,每个指针都是int类型的,会指向一个int的值. 1 for(int i=0; i<10; i++) 2 p[i] = &a[i]; //把a中的每个元素的地址都放在了指针数组p里. 3 4 for(int j=0; j&l

设计一个函数,找出整型数组元素的最大值

/* 设计一个函数,找出整型数组元素的最大值 */ #include <stdio.h> int maxOfArray(int array[], int length) { // 数组当做函数参数传递时,会当做指针变量来使用,指针变量在64bit编译器环境下,占据8个字节 //int size = sizeof(array); //printf("array=%d\n", size); //sizeof(array); // 1.定义一个变量存储最大值(默认就是首元素) i

一个整型数组里除了两个不同数字之外,其它的数字都出现了两次。请写程序找出这两个只出现一次的数字。

曾经做过一道水题找出除了一个数字之外,其他数字都有2个.直接异或 最后结果就是那个数. 现在变成存在2个不一样的数字,假设成x,y,那么可以O(n)求出x^y,因为x,y不同,所以异或的结果不为0,看成2进制数,那么找到第一位为1 的位置,将这个位置设置为划分点,数组里所有这个位置为1 的异或一次,所有为0的再异或一次,最终求出的两个即为两个独特的数字. #include <stdio.h> #include <string.h> #include <algorithm>

Android jni 编程3(对基本类型一维整型数组的操作)总结版

主要学习资料:黑马程序员的NDK方法使用(生产类库so)              jni编程指南中文版(已上传至博客园) 博主文章(它使用的是VS和eclipse联合开发):http://www.cnblogs.com/activity-life/p/3643047.html //0.传入一维整型数组,无返回值(但已对数组进行了修改) public native void arrayEncode(int[] arr); //1.传入一维整型数组,数组长度(因为c不容易获取而Java方便),返回

在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素。

题目:在一个整型数组中有一个元素的出现次数超过了数组长度的一半,试设计一个 在时间上尽可能高效的算法,找出这个元素.要求:(1)给出算法的基本设计思想.(2)根据设计思想,采用C或C++或Java语言描述算法,关键之处给出注释.(3)说明你所设计算法的时间复杂度和空间复杂度. (1)基本的设计思想: 一个数字出现的次数超过了长度的一半, 那么我们可以这样认为这个数字出现的个数一定大于其他全部数字出现的个数之和.算法的步骤如下: ①设数组为data[],数组长度为n,i=1.置currentAxi

使用一个函数找出一个整型数组中的最大值和最小值

/***************************************************** 知识点:bool类型,命名空间,输入输出 题目要求: 使用一个函数找出一个整型数组中的最大值和最小值 *****************************************************/ #include<stdlib.h> #include<iostream> using namespace std; namespace CJJ // 定义命名空间

编程之美-----在一个整型数组里找出只出现过一次的那两个数

一.一个数组里除了一个数字之外,其他的数字都出现了两次 用异或来解 #include <iostream> using namespace std; int main() { int T; int n,m; while(cin>>T,T){ cin>>n; while(--T){ cin>>m; n=m^n; } printf("%d\n",n); } return 0; } 扩展: 一个整型数组里除了两个数字之外,其他的数字都出现了两次

Java整型数组的最大长度到底有多长?

Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse默认的vm arguments,运行以下代码: public static void main(String[] args) {byte[] array=new byte[61858764];// short[] shortArray=new short[30929382];// int[] int