私はCプログラミングが初めてです。私にはやるべき仕事があります。ユーザーは 2 つの文字列を入力します。私がする必要があるのは、これら 2 つの指定された文字列の一般的な文字のみで構成される新しい文字列を作成することです。例: 与えられた場合:
str1 = "ABCDZ"
str2 = "ADXYZ"
新しい文字列は次のようになります"ADZ"
。私はそれを機能させることはできません。より良い (もっと単純な) アルゴリズムが必要だと思いますが、これには時間がかかりすぎたので、完成させたいと思います.. あなたの助けが必要です!
私がこれまでに行ったことは次のとおりです。
char* commonChars (char* str1, char* str2)
{
char *ptr, *qtr, *arr, *tmp, *ch1, *ch2;
int counter = 1;
ch1 = str1;
ch2 = str2;
arr = (char*) malloc ((strlen(str1)+strlen(str2)+1)*(sizeof(char))); //creating dynamic array
strcpy(arr, str1);
strcat(arr,str2);
for (ptr = arr; ptr < arr + strlen(arr); ptr++)
{
for (qtr = arr; qtr < arr + strlen(arr); qtr++) // count for each char how many times is appears
{
if (*qtr == *ptr && qtr != ptr)
{
counter++;
tmp = qtr;
}
}
if (counter > 1)
{
for (qtr = tmp; *qtr; qtr++) //removing duplicate characters
*(qtr) = *(qtr+1);
}
counter = 1;
}
sortArray(arr, strlen(arr)); // sorting the string in alphabetical order
qtr = arr;
for (ptr = arr; ptr < arr + strlen(arr); ptr++, ch1++, ch2++) //checking if a letter appears in both strings and if at least one of them doesn't contain this letter - remove it
{
for (qtr = ptr; *qtr; qtr++)
{
if (*qtr != *ch1 || *qtr != *ch2)
*qtr = *(qtr+1);
}
}
}
このコードを完成させる方法がわからない..どんな提案にも感謝します!