Моя программа принимает три последовательности, но не может вывести по одному разу общие символы.
Нужно переделать функцию passForCommonSymbols или подсказать алгоритм того, как получить по одному разу те символы, которые входят одновременно во все три последовательности?
Задача:
#include<stdio.h>
#include<locale.h>
template < typename T1, typename T2>
void passForCommonSymbols(T1* Array1, T1* Array2, T1* Array3, T2 size1, T2 size2, T2 size3)
{
char Array[100] = {0};
int p = 0;
char simbols;
for (int i = 1; i < size1; i++)
{
for (int j = 1; j < size2; j++)
{
if (Array1[i] == Array2[j])
{
for (int y = 1; y < size3; y++)
{
if (Array2[i] == Array3[y])
{
int r = 0;
while (r < p)
{
if (Array3[y] != Array[r])
{
r++;
}
if (r == p)
{
Array[p] = Array1[i];
}
}
p++;
}
}
}
}
}
printf("Общие символы: %s\n", Array);
}
int main()
{
setlocale(LC_ALL, "ru");
int k, m, n;
printf("Введите размер первой последовательности:\n");
scanf_s("%i", &k);
printf("Введите размер второй последовательности:\n");
scanf_s("%i", &m);
printf("Введите размер третьей последовательности:\n");
scanf_s("%i", &n);
getchar();
char* s = new char[k];
char* t = new char[m];
char* u = new char[n];
printf("Введите первую последовательность:\n");
fgets(s, k, stdin);
printf("Введите вторую последовательность:\n");
fgets(t, m, stdin);
printf("Введите третью последовательность:\n");
fgets(u, n, stdin);
printf("\n");
printf("Введенные последовательности:\n\n");
printf("Первая последовательность: %s\n", s);
printf("Первая последовательность: %s\n", t);
printf("Первая последовательность: %s\n", u);
passForCommonSymbols(s, t, u, k, m, n);
delete[] s;
delete[] t;
delete[] u;
}