请教两个数组比较的问题
比如a[]={1,2,3},b[]={3,2,1}哪么就认为他俩是相等的而如过a[]={1,2,3},b[]={1,2,1}则不是。。。。
希望有代码
谢谢
补充一点:我的意思不是数组长度,而是元素的比较。即两个数组如果元素相同即说明相等(但不能重复)。
[[it] 本帖最后由 bleach100 于 2008-3-29 22:07 编辑 [/it]]
程序代码:/*
Name:
Copyright:
Author: suixin
Date: 30-03-08 08:29
Description:
*/
#include <stdio.h>
#include <stdlib.h>
// 去除重复
int DelDup(int a[], int iSize)
{
int iDelCount = 0;
for (int ps=0; ps<iSize; ps++)
{
if (a[ps] != a[ps+1])
{
a[ps-iDelCount] = a[ps];
}
else
{
iDelCount++;
}
}
return iDelCount;
}
// 在一个数组中是否有目标元素
int FindElem(int iSource[], int iSourceCount, int iAim)
{
for (int ps=0; ps<iSourceCount; ps++)
{
if (iSource[ps] == iAim) // 是要找的数
{
return 1;
}
}
return 0;
}
// 检测两个数组是否"相同"
int CheckSame(int a[], int b[], int iaSize, int ibSize)
{
int iaCount = 0, ibCount = 0;
for (int ps=0; ps<iaSize; ps++)
{
if (FindElem(b, ibSize, a[ps])) // 在b里面找a的元素
{
iaCount++; // a里面的元素 b里面都有
}
}
for (int pos=0; pos<ibSize; pos++)
{
if (FindElem(a, iaSize, b[pos]))
{
ibCount++;
}
}
if ((iaCount==iaSize) && (ibCount==ibSize))
{
return 1;
}
return 0;
}
int main(void)
{
int a[]={1,2,3,3,1}, b[]={3,2,1,2,1,3,2,};
int iaSize = sizeof(a)/sizeof(int); // C++里,这里应该加上const
int ibSize = sizeof(b)/sizeof(int);
if (DelDup(a,iaSize) > iaSize)
{
return -1;
}
if (DelDup(b,ibSize) > ibSize)
{
return -1;
}
if (CheckSame(a,b,iaSize,ibSize))
{
puts("相同");
}
else
{
puts("不相同");
}
system("pause");
return 0;
}
程序代码:
/*
Name:
Copyright:
Author: suixin
Date: 30-03-08 08:29
Description:
*/
#include <stdio.h>
#include <stdlib.h>
// 去除重复
int DelDup(int a[], int iSize)
{
int iDelCount = 0;
for (int ps=0; ps<iSize; ps++)
if (a[ps] != a[ps+1])
a[ps-iDelCount] = a[ps];
else
iDelCount++;
return iDelCount;
}
// 在一个数组中是否有目标元素
int FindElem(int iSource[], int iSourceCount, int iAim)
{
for (int ps=0; ps<iSourceCount; ps++)
if (iSource[ps] == iAim) // 是要找的数
return 1;
return 0;
}
// 检测两个数组是否"相同"
int CheckSame(int a[], int b[], int iaSize, int ibSize)
{
int iaCount = 0, ibCount = 0;
for (int ps=0; ps<iaSize; ps++)
if (FindElem(b, ibSize, a[ps])) // 在b里面找a的元素
iaCount++; // a里面的元素 b里面都有
for (int pos=0; pos<ibSize; pos++)
if (FindElem(a, iaSize, b[pos]))
ibCount++;
if ((iaCount==iaSize) && (ibCount==ibSize))
return 1;
return 0;
}
int main(void)
{
int a[]={1,2,3,3,1}, b[]={3,2,1,2,1,3,2,};
int iaSize = sizeof(a)/sizeof(int);
int ibSize = sizeof(b)/sizeof(int);
if (DelDup(a,iaSize) > iaSize)
return -1;
if (DelDup(b,ibSize) > ibSize)
return -1;
if (CheckSame(a,b,iaSize,ibSize))
puts("相同");
else
puts("不相同");
system("pause");
return 0;
}
