Skip to content

Instantly share code, notes, and snippets.

@osama2kabdullah
Created October 26, 2024 05:37
Show Gist options
  • Select an option

  • Save osama2kabdullah/ad085b81da685ac17f033c4011c01fec to your computer and use it in GitHub Desktop.

Select an option

Save osama2kabdullah/ad085b81da685ac17f033c4011c01fec to your computer and use it in GitHub Desktop.
3 words order lexicographically by C
#include <stdio.h>
int main()
{
char s1[1001], s2[1001], s3[1001];
scanf("%s %s %s", s1, s2, s3);
int min1;
// min calculate for first 2 string
int i = 0;
while (1)
{
if (s1[i] == '\0' && s2[i] == '\0')
{
// printf("%s", s1);
min1 = 1;
break;
}
else if (s1[i] != '\0' && s2[i] == '\0')
{
// printf("%s", s2);
min1 = 2;
break;
}
else if (s1[i] == '\0' && s2[i] != '\0')
{
// printf("%s", s1);
min1 = 1;
break;
}
else if (s1[i] < s2[i])
{
// printf("%s", s1);
min1 = 1;
break;
}
else if (s1[i] > s2[i])
{
// printf("%s", s2);
min1 = 2;
break;
}
i++;
}
char s1min[1001];
char s1max[1001];
if (min1 == 1)
{
int s1len = 0;
for (int a = 0; s1[a] != '\0'; a++)
{
s1min[a] = s1[a];
s1len = a + 1;
}
s1min[s1len] = '\0';
int s1lenForMax = 0;
for (int a = 0; s2[a] != '\0'; a++)
{
s1max[a] = s2[a];
s1lenForMax = a + 1;
}
s1max[s1lenForMax] = '\0';
} else if (min1 == 2) {
int s1len = 0;
for (int a = 0; s2[a] != '\0'; a++)
{
s1min[a] = s2[a];
s1len = a + 1;
}
s1min[s1len] = '\0';
int s1lenForMax = 0;
for (int a = 0; s1[a] != '\0'; a++)
{
s1max[a] = s1[a];
s1lenForMax = a + 1;
}
s1max[s1lenForMax] = '\0';
}
int x = 0;
int minFinal;
// small ditector machine
// 1 = s1min
// 2 = s3
while (1)
{
if (s1min[x] == '\0' && s3[x] == '\0')
{
minFinal = 1;
break;
}
else if (s1min[x] != '\0' && s3[x] == '\0')
{
minFinal = 2;
break;
}
else if (s1min[x] == '\0' && s3[x] != '\0')
{
minFinal = 1;
break;
}
else if (s1min[x] < s3[x])
{
minFinal = 1;
break;
}
else if (s1min[x] > s3[x])
{
minFinal = 2;
break;
}
x++;
}
char smallest[1001];
char secondBig[1001];
if (minFinal == 1)
{
/* smallest = s1min */
int len = 0;
for (int a = 0; s1min[a] != '\0'; a++)
{
smallest[a] = s1min[a];
len = a + 1;
}
smallest[len] = '\0';
int lenforBig = 0;
for (int a = 0; s3[a] != '\0'; a++)
{
secondBig[a] = s3[a];
lenforBig = a + 1;
}
secondBig[lenforBig] = '\0';
}
else if (minFinal == 2)
{
/* smallest = s3 */
int len = 0;
for (int a = 0; s3[a] != '\0'; a++)
{
smallest[a] = s3[a];
len = a + 1;
}
smallest[len] = '\0';
int lenforBig = 0;
for (int a = 0; s1min[a] != '\0'; a++)
{
secondBig[a] = s1min[a];
lenforBig = a + 1;
}
secondBig[lenforBig] = '\0';
}
// compare with 2 big that found from prevous comparasion
// 1 = s1max
// 2 = secondBig
int y = 0;
int maxFinal;
while (1)
{
if (s1max[y] == '\0' && secondBig[y] == '\0')
{
maxFinal = 2;
break;
}
else if (s1max[y] != '\0' && secondBig[y] == '\0')
{
maxFinal = 1;
break;
}
else if (s1max[y] == '\0' && secondBig[y] != '\0')
{
maxFinal = 2;
break;
}
else if (s1max[y] < secondBig[y])
{
maxFinal = 2;
break;
}
else if (s1max[y] > secondBig[y])
{
maxFinal = 1;
break;
}
y++;
}
if (maxFinal == 1)
{
printf("%s\n%s", smallest, s1max);
}
else
{
printf("%s\n%s", smallest, secondBig);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment