himanshuk
BAN USER#include<stdio.h>
#include<string.h>
int main()
{
char arr[9]={2,-1,-3,-7,-8,9,5,-5,-7};
int arrsize=9,i,j,k,tmp,chk1=0,chk2=0,p,m;
printf("\n input arr =");
for(i=0;i<arrsize;i++)
{
printf("%d ",arr[i]);
}
for(i=0;i<arrsize;i++)
{
printf("\n i=%d",i);
for(j=i+1;j<arrsize;j++)
{
if(arr[i]<0)
{
if(arr[j]>0)
break;
else{
k=j;
do
{k++; if(k>=arrsize){chk1=1; break;}}while(arr[k]<0);
if(chk1!=1)
{
tmp=arr[k];
m=k-1;
do {arr[m+1]=arr[m]; m--;} while(m>=j);
// arr[k]=arr[j];
arr[j]=tmp;
}
chk1=0;
}
}else if(arr[i]>0)
{
if(arr[j]<0)
break;
else{
k=j;
do {k++; if(k>=arrsize){chk2=1; break;} } while(arr[k]>0);
if(chk2!=1)
{
tmp=arr[k];
m=k-1;
do {arr[m+1]=arr[m]; m--;} while(m>=j);
//arr[k]=arr[j];
arr[j]=tmp;
}
chk2=0;
}
}else;
}
printf("\n arr =");
for(p=0;p<arrsize;p++)
{
printf("%d ",arr[p]);
}
}
/*
printf("\n output arr =");
for(i=0;i<arrsize;i++)
{
printf("%d ",arr[i]);
}*/
printf("\n");
}
1] This C code is being tested in gcc.
The exact output is achieved using O(N2) and not by O(N).
In the following code, order of lower and upper case characters within the string is also maintained.
I/P: [ZtY cVj PkMl S]
O/P: [tcjkl ZYVPMS]
I have used a [char tmpchar variable] in my code for swapping.
2] #include<stdio.h>
#include<string.h>
int main()
{ char str[14]="ZtY cVj PkMl S";
lowspaceUpper(str);
}
lowspaceUpper(char *str)
{ int i,j,k;
char tmpchar;
printf("\nbefore sort:string=%s length=%d",str,strlen(str));
// Sorting Algorithm is used to swap characters according to the required sequence.
for(i=0;i<strlen(str);i++)
{
for(j=i+1;j<strlen(str);j++)
{
// the foll. conditions are used, if no swapping is required
if((str[i]==32 && str[j]==32))
continue;
else if((str[i]>=65 && str[i]<=90) && (str[j]>=65 && str[j]<=90))
continue;
else if((str[i]>=97 && str[i]<=122) && (str[j]>=97 && str[j]<=122))
continue;
else if(str[i]==32 && (str[j]>=65 && str[j]<=90))
continue;
else if((str[i]>=97 && str[i]<=122) && str[i]==32)
continue;
else if((str[i]>=97 && str[i]<=122) && (str[i]>=65 && str[i]<=90))
continue;
else{
if(str[i] >=65 && str[i] <=90) // foll condition is used if need to swap a Upper case with lower case or space
{
k=j;
tmpchar=str[k];
for(;k!=i;k--)
{
str[k]=str[k-1];
}
str[i]=tmpchar;
}else{ // foll condition is used if v need to swap a space with Upper case or Lower case
if(str[i]<str[j])
{
swap(&str[i],&str[j]);
}
}
}
}
printf("\niteration %d:string=%s",i,str);
}
printf("\nafter sort:string=%s length=%d",str,strlen(str));
printf("\n");
}
swap(char *ptr1,char *ptr2)
{
*ptr1 = (*ptr1) + (*ptr2); // x now becomes 15
*ptr2 = (*ptr1) - (*ptr2); // y becomes 10
*ptr1 = (*ptr1) - (*ptr2); // x becomes 5
}
#include<stdio.h>
- himanshuk November 28, 2015#include<string.h>
int main()
{
char arr[9]={2,-1,-3,-7,-8,9,5,-5,-7};
int arrsize=9,i,j,k,tmp,chk1=0,chk2=0,p,m;
printf("\n input arr =");
for(i=0;i<arrsize;i++)
{
printf("%d ",arr[i]);
}
for(i=0;i<arrsize;i++)
{
printf("\n i=%d",i);
for(j=i+1;j<arrsize;j++)
{
if(arr[i]<0)
{
if(arr[j]>0)
break;
else{
k=j;
do
{k++; if(k>=arrsize){chk1=1; break;}}while(arr[k]<0);
if(chk1!=1)
{
tmp=arr[k];
m=k-1;
do {arr[m+1]=arr[m]; m--;} while(m>=j);
// arr[k]=arr[j];
arr[j]=tmp;
}
chk1=0;
}
}else if(arr[i]>0)
{
if(arr[j]<0)
break;
else{
k=j;
do {k++; if(k>=arrsize){chk2=1; break;} } while(arr[k]>0);
if(chk2!=1)
{
tmp=arr[k];
m=k-1;
do {arr[m+1]=arr[m]; m--;} while(m>=j);
//arr[k]=arr[j];
arr[j]=tmp;
}
chk2=0;
}
}else;
}
printf("\n arr =");
for(p=0;p<arrsize;p++)
{
printf("%d ",arr[p]);
}
}
/*
printf("\n output arr =");
for(i=0;i<arrsize;i++)
{
printf("%d ",arr[i]);
}*/
printf("\n");
}