ALLInterview.com :: Home Page KalAajKal.com
 Advertise your Business Here     
Browse  |   Placement Papers  |   Company  |   Code Snippets  |   Certifications  |   Visa Questions
Post Question  |   Post Answer  |   My Panel  |   Search  |   Articles  |   Topics  |   ERRORS new
   Refer this Site  Refer This Site to Your Friends  Site Map  Bookmark this Site  Set it as your HomePage  Contact Us     Login  |  Sign Up                      
info       Did you received any Funny E-Mails from your Friends and like to share with rest of our friends? Yeah!! you can post that stuff   HERE
Google
 
Categories  >>  Code Snippets  >>  Programming Code  >>  C Code
 
 


 

 
 C Code interview questions  C Code Interview Questions
 C++ Code interview questions  C++ Code Interview Questions
 VC++ Code interview questions  VC++ Code Interview Questions
 Java Code interview questions  Java Code Interview Questions
 Dot Net Code interview questions  Dot Net Code Interview Questions
 Visual Basic Code interview questions  Visual Basic Code Interview Questions
 Programming Code AllOther interview questions  Programming Code AllOther Interview Questions
Question
Given an array of characters which form a sentence of 
words, give an efficient algorithm to reverse the order of 
the words (not characters) in it. 
 Question Submitted By :: Maggy
I also faced this Question!!     Rank Answer Posted By  
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 1
#include"stdio.h"
#include"stdlib.h"

int reverse(char *string, char delimiter)
{
  char *src, *dest;
  char *temp = string;

  while( *temp )
  {
    if (*temp == delimiter)
    {
      temp++;
      continue;
    }

    src=dest=temp;
    while ( (*(dest+1) != delimiter) &&
            ( *(dest+1) != '\0' )) dest++;

            //( *(dest+1) != '\n' ) &&
    temp=dest+1;
    while( dest > src )
    {
      char tmp = *dest;
      //*dest -- = *src;
      *dest = *dest-- *src;
      //*src++=tmp;
      *src = *src++ tmp;
    }
  }
  return 0;
}

int main()
{
    char name[] = "vinod kumar dhochak";
    printf("%s\n",name);
    reverse(name,' '); /* space as delimiter,Reverse Words 
*/
    printf("%s\n",name);
    reverse(name,'\n'); /* Reverse Complete Sentence */
    printf("%s\n",name);
}
 
Is This Answer Correct ?    2 Yes 3 No
Vinod Kumar
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 2
#include<iostream>
#include<vector>
using namespace std;
int main()
{
    char str[]="rahul shandilya is going";
    
    string ans;
    int n=0;
    while(str[n]!='\0')
         n++;   
         //cout<<n;  
        bool flag=true;     
   for(int i=n-1;i>=0;i--)
   {
          if(str[i]==' ')
          {
                       int m=i+1;
                      // cout<<m<<" ";
                       string temp;
                       while(str[m]!=' ' && m<n)
                       { 
                                       temp+=str[m];
                                       m++;
                       }
                       //cout<<m<<" ";
                       if(flag)
                       {
                               ans+=temp;
                               flag=false;
                               continue;
                       }
                       if(flag==false)
                       {
                                      ans+=' ';
                                      ans+=temp;
                       }
          } 
   }
    
   cout<<ans; 
    system("pause");
    return 0;
}
//tell me if there is a batter way to do it,i dont think my 
//solution is efficent
 
Is This Answer Correct ?    0 Yes 3 No
Rahul Shandilya
 
 
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 3
/*complexity-2n..check d prog.  */

#include<iostream.h>
#include<string.h>
#include<stdio.h>


void rev_word(char str[20],int m,int n)
{
int i,l,k;
k=n-m+1;
if(k%2==0)
l=(k/2-1);
else
l=k/2;
k=n;
for(i=m;i<=m+l;i++)
{ count++;
char t=str[i];
str[i]=str[k];
str[k]=t;
k--;
}
}
int main()
{
char str[100];
int i,j=0;
cout<<"\n\nenter string:";
gets(str);

rev_word(str,0,strlen(str)-1);


for(i=0;i<=strlen(str);i++)
{    count++;
if(str[i]==' '||str[i]=='\0')
{
rev_word(str,j,i-1);
j=i;
while(str[j]==' ')
j++;
i=j;
}
}
cout<<"\n\nsentence with order of words reversed is:";
cout<<str;
return 0;
}


 
Is This Answer Correct ?    0 Yes 4 No
Raghuram.A
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 4
#include<stdio.h>
main()
{
	int i=0,j=0,start=0,end=0,len,w_len;
	char temp;
	char str[]="Papa Kehte HAIN bada naam karega";
	printf("Before reversing the words string is %s \n",str);
	len=strlen(str);
	for(i=0,j=len-1;i<j;i++,j--)
	{
		temp=str[j];
		str[j]=str[i];
		str[i]=temp;
	}
	for(i=0,j=0;str[i]!=0;)
	{
		i=j;
		for(;str[i]!=' '&& i<len;)
			i++;
		w_len=(i-j)-1;
		
		for(start=j,end=(start+w_len);start<end;start++,end--)
		{
			temp=str[start];
			str[start]=str[end];
			str[end]=temp;
		}
		j=i+1;
	}
	printf("After  reversing the words string is %s \n",str);
}
 
Is This Answer Correct ?    2 Yes 1 No
Vijay
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 5
this works in O(n) as first reverse all the sentence....then
reverse each word....


#include<iostream.h>
#include<conio.h>
#include<string.h>

char a[50];

void wrd_reverse()
{
void str_rev(int start_index,int len);
int t=strlen(a);
str_rev(0,t);
int i=0;int st_indx=0;int count=0;
int size;
while(a[i]!='\0')
	{
	if(a[i]!=' ')
	count++;
	else
	{

	size=count;
	str_rev(st_indx,size);
	count=0;
	st_indx=i+1;
	}
	i++;
	}
size=count;
str_rev(st_indx,size);

}

void str_rev(int start_index,int len)
{
int sft=start_index;
int lenm=len/2;
len--;
for(int i=0;i<lenm;i++)
	{
	a[sft+i]=a[sft+i]+a[(sft+len)-i];
	a[(sft+len)-i]=a[sft+i]-a[(sft+len)-i];
	a[sft+i]=a[sft+i]-a[(sft+len)-i];
	}
}

int main(){
cin.getline(a,40);
void wrd_reverse();
wrd_reverse();
cout.write(a,40);
return 0;

}
 
Is This Answer Correct ?    0 Yes 0 No
Ashish
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 6
//check this program....

#include <string.h>
#include <stdio.h>
main(){
        char a[100],b[100];
        int i,j=0,c=0,k,cnt=0;
        printf("enter the sentence\n");
        for(i=0;i>=0;i++){
         a[i]=getchar();
         if(a[i]=='\n')break;
        }
        for(i=0;a[i]!='\n';i++)
          cnt++;
        for(i=0;i<(cnt+1);i++)
          b[i]=' ';
        for(i=0;i<(cnt+1);i++){
            c++;
          if((a[i]==' ')||(a[i]=='\n')){
            c=c-1;
            for(j=(cnt-i),k=(i-c);c>0;k++,j++,c--){
              b[j]=a[k];
            }c=0;
           }
         }
              printf("result: ");
              for(i=0;i<cnt+1;i++)
              putchar(b[i]); printf("\n");
 }
 
Is This Answer Correct ?    3 Yes 0 No
Patrck
 
  Re: Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it.
Answer
# 7
int i, j, k;
            int t = 0;

            char[] c = "manish singhal is here".ToCharArray();

            j = c.Length;
            char[] b=new char[c.Length];
           
            for (i = c.Length - 1; i >= 0; i--)
                if ((i > 0 && c[i - 1] == ' ') || i == 0)
                {
                    for (k = i; k < j; k++)
                        b[t++] = c[k];
                    if (i > 0)
                        b[t++] = c[--i];
                    j = i;
                }
            Console.WriteLine(b);
            Console.ReadLine();
 
Is This Answer Correct ?    1 Yes 0 No
Manish
 

 
 
 
Other C Code Interview Questions
 
  Question Asked @ Answers
 
how to check whether a linked list is circular.  3
Print an integer using only putchar. Try doing it without using extra storage.  1
main(){ char a[100]; a[0]='a';a[1]]='b';a[2]='c';a[4]='d'; abc(a); } abc(char a[]){ a++; printf("%c",*a); a++; printf("%c",*a); }  1
How will you print % character? a. printf(“\%”) b. printf(“\\%”) c. printf(“%%”) d. printf(“\%%”) HCL1
main() { float f=5,g=10; enum{i=10,j=20,k=50}; printf("%d\n",++k); printf("%f\n",f<<2); printf("%lf\n",f%g); printf("%lf\n",fmod(f,g)); }  1
print a semicolon using Cprogram without using a semicolon any where in the C code in ur program!! Tata-Elxsi19
Given only putchar (no sprintf, itoa, etc.) write a routine putlong that prints out an unsigned long in decimal.  5
main() { 41printf("%p",main); }8  1
void main() { char ch; for(ch=0;ch<=127;ch++) printf(“%c %d \n“, ch, ch); }  1
main() { int i=5; printf("%d%d%d%d%d%d",i++,i--,++i,--i,i); }  1
main ( ) { static char *s[ ] = {“black”, “white”, “yellow”, “violet”}; char **ptr[ ] = {s+3, s+2, s+1, s}, ***p; p = ptr; **++p; printf(“%s”,*--*++p + 3); }  1
main() { if (!(1&&0)) { printf("OK I am done."); } else { printf("OK I am gone."); } } a. OK I am done b. OK I am gone c. compile error d. none of the above HCL1
main() { register int a=2; printf("Address of a = %d",&a); printf("Value of a = %d",a); }  1
main() { signed int bit=512, i=5; for(;i;i--) { printf("%d\n", bit >> (i - (i -1))); } } a. 512, 256, 0, 0, 0 b. 256, 256, 0, 0, 0 c. 512, 512, 512, 512, 512 d. 256, 256, 256, 256, 256 HCL1
You are given any character string. Find the number of sets of vowels that come in the order of aeiou in the given string. For eg., let the given string be DIPLOMATIC. The answer returned must be "The number of sets is 2" and "The sets are "IO and AI". Vowels that form a singleton set must be neglected. Try to post the program executable in gcc or g++ or in java.  3
int i,j; for(i=0;i<=10;i++) { j+=5; assert(i<5); }  1
#include<stdio.h> main() { const int i=4; float j; j = ++i; printf("%d %f", i,++j); }  1
Given an array of characters which form a sentence of words, give an efficient algorithm to reverse the order of the words (not characters) in it. Wipro2
What are segment and offset addresses? Infosys1
void main() { int i=10, j=2; int *ip= &i, *jp = &j; int k = *ip/*jp; printf(“%d”,k); }  1
 
For more C Code Interview Questions Click Here 
 
 
 
 
 
   
Copyright Policy  |  Terms of Service  |  Help  |  Site Map 1  |  Articles  |  Site Map  |   Site Map  |  Contact Us interview questions urls   External Links 
   
Copyright © 2007  ALLInterview.com.  All Rights Reserved.

ALLInterview.com   ::  Forum9.com   ::  KalAajKal.com