GOC 102 "Crime Investigation" - Editorial

PROBLEM LINK:

GOC102 Problem - CodeChef

CodeChef: Practical coding for everyone

Author: nilesh_dbit | CodeChef User Profile for Nilesh | CodeChef

Tester: nilesh_dbit | CodeChef User Profile for Nilesh | CodeChef

Editorialist: nilesh_dbit | CodeChef User Profile for Nilesh | CodeChef

DIFFICULTY:

EASY-MEDIUM

PROBLEM:

Crime Scene: Two undercover ATS officer investigating bomb explosion case & its terror link in Mumbai and they both were found murdered .They were about to solve the case and collect evidences against a business man for funding the terror activities. There was a complete mistrust among the Detective Inspector Daya Nayak and his team as someone was leaking the information. Department of Home Affairs decided to appoint Mr.Sherlock to help Mr. Daya solve the case but warned not to trust anyone. Mr. Sherlock was assisted by Dr.Watson. They both want a mechanism to communicate with each other keep communication hidden from others. The mechanism say that you should reverse each character of the word and then replace each character to the right by 3.

EXPLANATION:

Example:
Input : i love india

i evol aidni

Output: l#hyro#dlgql

AUTHOR’S AND TESTER’S SOLUTIONS:


#include<stdio.h> 
/*Function to reverse any sequence starting with pointer begin and ending with pointer end */ 
void reverse(char *begin, char *end) 
{ 
char temp; 
while (begin < end) 
{ 
	temp = *begin; 
	*begin++ = *end; 
	*end-- = temp; 
} 
} 
 void encode(char *s) 
{ 
    while(*s) 
    { 
       // printf("B-->%c   ",*s); 
        *s=*s+3; 
       // printf("A-->%c \n",*s); 
        s++; 
    } 
} 


void reverseWords(char *s) 
{ 
    char *word_begin = NULL; 
    char *temp = s; /* temp is for word boundry */ 
 
    /*STEP 1 of the above algorithm */ 
    while( *temp ) 
    { 
        /*This condition is to make sure that the string start with 
          valid character (not space) only*/ 
        if (( word_begin == NULL ) && (*temp != ' ') ) 
        { 
            word_begin=temp; 
        } 
        if(word_begin && ((*(temp+1) == ' ') || (*(temp+1) == '\0'))) 
        { 
            reverse(word_begin, temp); 
            word_begin = NULL; 
        } 
        temp++; 
    } /* End of while */ 
 
   
} 
 
/* Driver function to test above functions */ 
int main() 
{ 
char s[100]; // = "i like this program very much"; 
fgets(s,100,stdin); 
//printf("%s\n", s); 

reverseWords(s); 
encode(s); 
printf("%s\n", s); 
getchar(); 
return 0; 
}