比较两个char多维数组

时间:2016-12-02 14:29:48

标签: c++ arrays char compare

我有两个char数组(两个[10] [10])并且我想比较第一个数组中的每个元素与另一个元素中的相同元素,如果它们相似则返回1。 阵列:

[1] "Atom.Type" and "Molar.Mass"

> Atom.Type 
[1] "Oxygen" "Lithium" "Nitrogen" "Hydrogen"
> Molar.Mass
[1] 16 6.9 14 1

其中t:char t = -2; (提起的广场) 我正在尝试那样:

char task [10][10] = {
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', t,' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', t, ' ', ' ',t, ' ', ' ', ' ' },
{ ' ', ' ', t, t, t, t,t, t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, t, t, t,t, t, ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
};

char solution [10][10] = {
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ', t, t,' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', t, ' ', ' ',t, ' ', ' ', ' ' },
{ ' ', ' ', t, t, t, t,t, t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, ' ', ' ', ' ',' ', t, ' ', ' ' },
{ ' ', ' ', t, t, t, t,t, t, ' ', ' ' },
{ ' ', ' ', ' ', ' ', ' ', ' ',' ', ' ', ' ', ' ' },
};

并在主要:

bool cond (char task[10][10], char solution[10][10])
{
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (strcmp(task[i][j], solution[i][j]))
    }
}
}

但它没有用,从char转换为* char存在一些问题,我不知道如何修复它。对于编码很多的人来说,这显然很明显,但我不是其中之一。

2 个答案:

答案 0 :(得分:1)

@skarpet 您的答案将覆盖每次迭代的结果。尝试这样的事情:

bool warunek (char task[10][10], char solution[10][10])
{
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (task[i][j] != solution [i][j])
        {
            return false;
        }
    }
}
return true;
}

此外,您不必迭代到最后,因为它在第一个错配时停止。

答案 1 :(得分:0)

@GoodDeeds @善行 是的,我粘贴了错误的代码:

bool warunek (char task[10][10], char solution[10][10])
{
int result = 0;
for (int i = 0; i < 10; i++)
{
    for (int j = 0; j < 10; j++)
    {
        if (task[i][j] == solution [i][j])
        {
            result= 0;
        } else
        {
            result= 1;
        }
    }
}
return result;
}

这是正确的(我的意思是代码,而不是逻辑,是否按预期工作)?