TCS Codevita solutions


Problem : Alpha Numeric Sorting

Given text comprising of words and numbers, sort them both in ascending order and print them in a manner that a word is followed by a number. Words can be in upper or lower case. You have to convert them into lowercase and then sort and print them.
Input Format:

First line contains total number of test cases, denoted by N
Next N lines, each contains a text in which words are at odd position and numbers are at even position and are delimited by space
Output Format:

Words and numbers sorted in ascending order and printed in a manner that a word is followed by a number.
Constraints:
1. Text starts with a word
2. Count of words and numbers are the same.
3. Duplicate elements are not allowed 
4. Words should be printed in lower case. 
5. No special characters allowed in text.

Sample Input and Output

SNo.InputOutput
1
2
Sagar 35 sanjay 12 ganesH 53 ramesh 19
Ganesh 59 suresh 19 rakesh 26 laliT 96

ganesh 12 ramesh 19 sagar 35 sanjay 53
ganesh 19 lalit 26 rakesh 59 suresh 96



SOLUTION:-

#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{
char s[100][100],t[100],e[100][100],o[100][100];
int i=0,j,k=0,swap,p,n,c,d,m=0,q,w,a[1000];
do
{
scanf("%s %d",&s[i],&a[i]);
i++;
}
while(getchar() != '\n');
for(w=0;w<i;w++)
{
q=0;
while(s[w][q] != '\0')
{
s[w][q] = tolower(s[w][q]);
q++;
}
}
for(w=1;w<i;w++)
{
for(j=1;j<i;j++)
    {
    if(strcmp(s[j-1],s[j])>0)
    {
    strcpy(t,s[j-1]);
    strcpy(s[j-1],s[j]);
    strcpy(s[j],t);
    }
    }
}
for (c = 0 ; c < i-1; c++)
  {
    for (d = 0 ; d < i - c - 1 ; d++)
    {
      if (a[d] > a[d+1]) 
      {
        swap=a[d];
        a[d]=a[d+1];
        a[d+1]=swap;
      }
    }
}
for(w=0;w<i;w++)
{
printf("%s %d ",s[w],a[w]);
}
return 0;
}

Happy Coding :) :')





Comments

Post a Comment