2つの配列の異なる単語を1つの配列にリンクするユニオン( "U")演算を作成しようとしていますが、動作しません。誰でも助けてくれますか?ありがとうございました。2つのC++配列の結合を計算する方法
これは私の連合機能である:
#define N 19
void CalcularUnion (tConjunto X, tConjunto Y, tConjunto* Z)
{
int i, j, k;
strcpy((*Z).Nombre, X.Nombre);
strcat((*Z).Nombre, "U");
strcat((*Z).Nombre, Y.Nombre);
for (i=0; i<N; i++)
{
strcpy((*Z).Elementos[i], " ");
}
for(i=0; i<N; i++)
{
if(strlen(X.Elementos[i]) != 0)
{
strcpy((*Z).Elementos[i], X.Elementos[i]);
}
else
{
break;
}
}
for(j=0; j<N; j++)
{
if(strlen(Y.Elementos[j]) != 0)
{
for(k=0; k<N; k++)
{
if(strcmp(Y.Elementos[j], X.Elementos[k]) == 0)
{
break;
}
else
{
strcpy((*Z).Elementos[i], Y.Elementos[j]);
}
}
}
}
ImprimirConjunto(*Z); //To print the result
}
tConjunto X
は含む配列です:Andalucia, Catalunia, Canarias
tConjunto Y
は含む配列です:Extremadura, Asturias
tConjunto Z
は結果でなければなりません。
この場合、結果は次のようになります。tConjunto Z --> Andalucia, Catalunia, Canarias, Extremadura, Asturias.
ただし、最初の配列(X)の単語の1つが2番目の単語に含まれているかどうかをチェックし、省略します。
誰でも手伝ってもらえますか? ありがとうございました!
'std :: string'を使用してください。後でありがとう。 –
'tConjunto'の定義を表示できますか?特に' Elementos'が(ユニット化された) 'char *'ポインタであるか、または割り当てを必要としないcharの配列であれば可能です。ところで、あなたがEmerald Weaponの勧告を適用することに決めたなら、あなたは彼に感謝することができます。もう答えは必要ありません;-) – Christophe
また、参照で 'X'と' Y'を渡すべきです。文字列の大きな配列はコピーされません。より良いperf: 'void CalcularUnion(tConjunto&X、tConjunto&Y、tConjunto * Z)' – selbie