programming-examples/c/String/C Program to Display every possible Combination of two Words or Strings from the input Strings without Repeated Combinations.c

95 lines
2.6 KiB
C
Raw Normal View History

2019-11-15 12:59:38 +01:00
/*
* C Program to Display every possible Combination of two Words
* or Strings from the input Strings without Repeated Combinations
*/
#include <stdio.h>
#include <string.h>
void main()
{
int i, j = 0, k, k1 = 0, k2 = 0, row = 0;
char temp[50];
char str[100], str2[100], str1[5][20], str3[6][20], str4[60][40];
printf("enter the string :");
scanf(" %[^
]s", &str);
printf("enter string:");
scanf(" %[^
]s", &str2);
/* read strings into 2d character arrays */
for (i = 0; str[i] != ''; i++)
{
if (str[i] == ' ')
{
str1[k1][j] = '';
k1++;
j = 0;
}
else
{
str1[k1][j] = str[i];
j++;
}
}
str1[k1][j] = '';
j = 0;
for (i = 0; str2[i] != ''; i++)
{
if (str2[i] == ' ')
{
str3[k2][j] = '';
k2++;
j = 0;
}
else
{
str3[k2][j] = str2[i];
j++;
}
}
str3[k2][j] = '';
/* concatenates string1 words with string2 and stores in 2d array */
row = 0;
for (i = 0; i <= k1; i++)
{
for (j = 0; j <= k2; j++)
{
strcpy(temp, str1[i]);
strcat(temp, str3[j]);
strcpy(str4[row], temp);
row++;
}
}
for (i = 0; i <= k2; i++)
{
for (j = 0; j <= k1; j++)
{
strcpy(temp, str3[i]);
strcat(temp, str1[j]);
strcpy(str4[row], temp);
row++;
}
}
/* eliminates repeated combinations */
for (i = 0; i < row; i++)
{
for (j = i + 1; j < row; j++)
{
if (strcmp(str4[i], str4[j]) == 0)
{
for (k = j; k <= row; k++)
{
strcpy(str4[k], str4[k + 1]);
}
row--;
}
}
}
/* displays the output */
for (i = 0; i < row; i++)
{
printf("
%s", str4[i]);
}
}