JoBat update

A Virtual World of Infotainment :)

Reverse string model 

Write a C program to reverse the given string

Sample input   : jobat update
Sample output : update jobat


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>

int main()
{
    char str[50];
    gets(str);
    int len;
    for(int i=0;str[i];len++,i++); //length of string
    for(int i=len-1;i>=0;i--)
    {
        if(str[i]==' ' || i==0)
        {
            if(i==0)
                printf("%c",str[0]);
            for(int j=i+1;str[j]!=' '&&str[j]!='\0';j++)
                printf("%c",str[j]);
            printf(" ");
        }
    }
    return 0;
}

OUTPUT:



Counting Rock samples 

Problem Description
Juan Marquinho is a geologist and he needs to count rock samples in order to send it to chemical laboratory. He has a problem: The laboratory only accepts rock samples by a range of its size in ppm (parts per million). Juan Marquinho receives the rock samples one by one and he classifies the rock samples according the range of the laboratory. This process is very hard because the rock samples may be in millions. Juan Marquinho needs your help, your task is develop a program to get the number of rocks of a given range of size.
Constraints
10 <= S <= 10000
 1 <= R <= 1000000
1<=size of Sample <= 1000

Input Format An positive Integer S (the number of rock samples) separated by a blank space, and a positive Integer R (the number of ranges of the laboratory); A list of the sizes of S samples (in ppm), as positive integers separated by space R lines where ith line containing two positive integers, space separated, indicating the minimum size and maximum size respectively of the ith range. Output R lines where ith line containing a single non-negative integer indicating the number of samples in the ith range.

Example 1 
Input 10 2 345 604 321 433 704 470 808 718 517 811 300 350 400 700
Output
2
4
Explanation
There are 10 sampes (S) and 2 ranges ( R ). The samples are 345, 604,…811. The ranges are 300-350 and 400-700. There are 2 samples in the first range (345 and 321) and 4 samples in the second range (604, 433, 470, 517). Hence the two lines of the output are 2 and 4.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
int main()
{
    int arr[30],range_arr[20];
    int arr_size,totalRange,i,j,count=0;
    scanf("%d%d",&arr_size,&totalRange);
    
    for(i=0;i<arr_size;scanf("%d",&arr[i]),i++); //get array values 
    
    totalRange=totalRange*2; //total range numbers if 2 means total 4 nos.
    
    for(i=0;i<totalRange;i=i+2) //each time when range is received   
    {                               //computation of no bw range will take place
        scanf("%d%d",&range_arr[i],&range_arr[i+1]);
        for(j=0;j<arr_size;j++) //check how many array value bw the range
        {
            if((arr[j]>=range_arr[i])&&(arr[j]<=range_arr[i+1]))
                count++;  //to count no.of values b/w the given range
        }
        printf("%d\n",count);
        count=0; //reset count for next range 
    }
    return 0;
}

OUTPUT :




Binary Search Tree - Traversal inorder , preorder and  postorder

Sample input : 30 20 40 70 60 80
Sample output : Preorder  : 30 20 60 80 70 40
                          Inorder    :  20 30 40 60 70 80
                          Postorder :  20 60 80 7040 30

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
struct node
{
    int data;
    struct node *left;
    struct node *right;
};
struct node *newNode,*root,*prev,*tptr;
void addNode(int data) 
{
    newNode=(struct node *)malloc(sizeof(struct node));
    newNode->data=data;
    newNode->left=NULL;
    newNode->right=NULL;
    if(root==NULL) //add root node if tree is empty 
        root=newNode;
    else   //add node in left or right to root
    {   
        for(prev=NULL,tptr=root;tptr;prev=tptr,tptr=(tptr->data < newNode->data) ? (tptr->right):(tptr->left));
        if(prev->data < newNode->data)
            prev->right=newNode;
        else
            prev->left=newNode;
    }
} 
void preOrder(struct node *travptr) //preorder traversal 
{
    if(travptr==NULL)
        return;
    printf("%d  ",travptr->data);
    postOrder(travptr->left);
    postOrder(travptr->right);
}

void inOrder(struct node *travptr) //inorder traversal
{
    if(travptr==NULL)
        return;
    inOrder(travptr->left);
    printf("%d  ",travptr->data);
    inOrder(travptr->right);
}
void postOrder(struct node *travptr) //postOrder traversal
{
    if(travptr==NULL)
        return;
    postOrder(travptr->left);
    postOrder(travptr->right);
    printf("%d  ",travptr->data);
}
int main()
{
    addNode(30);
    addNode(20);
    addNode(40);
    addNode(70);
    addNode(60);
    addNode(80);
    printf("PREORDER :  ");
    preOrder(root);
    printf("\nINORDER  :  ");
    inOrder(root);
    printf("\nPOSTORDER : ");
    postOrder(root);
    return 0;
}

OUTPUT :


Lexicographical order using Linked list


Write a program to sort the string in lexicographical order
Sample Input    : bala
Sample Output : aabl

Sample Input    : jobatupdate
Sample Output : aabdejopttu

Constraint : O(n)


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
struct node //node structure
{
    char data;
    struct node *next;
};
struct node *newnode,*start,*tptr,*prev;
void addNode(char character) 
{
    newnode=(struct node*)malloc(sizeof(struct node)); //node creation
    newnode->data=character;
    newnode->next=NULL;
    if(start==NULL) //first node
        start=newnode;
    else
    {   //ordering node in lexicographical order
        for(prev=NULL,tptr=start;tptr && tptr->data < newnode->data;prev=tptr,tptr=tptr->next);
        if(tptr==start) //insert at beginning
        {
            newnode->next=start;
            start=newnode;
        }
        else //insert at middle or end
        {
            prev->next=newnode;
            newnode->next=tptr;
        }
    }
}
int main()
{
    char str[20];int size;
    gets(str);
    size=strlen(str);
    for(int i=0;i<size;addNode(str[i]),i++);
    for(tptr=start;tptr;printf("%c",tptr->data),tptr=tptr->next);
    return 0;
}

OUTPUT :




Sorting - I

Write a C program to sort the given array of elements , place the even numbers in the right side and odd numbers in the left side in a sorted order.

Sample input   : 6
                          8 2 7 0 5 3
Sample output : 3 5 7 0 2 8


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include<stdio.h>
int odd[20],even[20]; //global array variables
int top_o=-1,top_e=-1; 
void oddnum(int num) //to store odd numbers
{
    top_o++; //index of odd array
    odd[top_o]=num;
}
void evennum(int num) //to store even numbers
{
    top_e++; //index of even array
    even[top_e]=num;
}
void sort(int array[],int top) //to sort
{
    int tmp;
    for(int i=0;i<top;i++)
    {
        for(int j=i+1;j<=top;j++)
        {
            if(array[i]>=array[j])
            {
                tmp=array[i];
                array[i]=array[j];
                array[j]=tmp;
            }
        }
        printf("%d ",array[i]);
    }
    printf("%d ",array[top]);
}
 
int main()
{
    int n;
    scanf("%d",&n);
    int arr[n],i;
    for(i = 0; i < n ; i++)
    {
        scanf("%d",&arr[i]);
        if(arr[i]%2==0){
            evennum(arr[i]);}
        else{
            oddnum(arr[i]);}
    }
    sort(odd,top_o);
    sort(even,top_e);
    return 0;
}

OUTPUT :

Backspace String Compare


Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

Sample input   1 : S = "ab#c"  T = "ad#c"
Sample output 1 : True
Explanation : Both S and T become "ac"

Sample input   2 : S = "a#c" T = "b"
Sample output 2 : False
Explanation : S become "c" but T become "b"

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <stdio.h>
#include<string.h>
char stack[100];
int top=-1;
//push character in to stack
void push(char cha)
{
    top++;
    stack[top]=cha;
}
//pop character from stack
int pop()
{
    stack[top]='\0'; //set empty character
    top--;
    if(top<-1) //this is incase ##abc 
    {           //if two ## come at the beginning
        top=-1;
    }
}
int main()
{
    char str1[20],str2[20];
    int len1,len2,i,j;
    gets(str1);
    gets(str2);
    len1=strlen(str1);
    len2=strlen(str2);
    for(i=0;i<len1;i++)
    {
        if(str1[i]=='#')
        {
            pop();
        }
        else
        {
            push(str1[i]);
        }
    }
    strcpy(str1,stack);
    top=-1;//reset the stack 
    for(j=0;j<len2;j++)
    {
        if(str2[j]=='#')
        {
            pop();
        }
        else
        {
            push(str2[j]);
        }
    }
    strcpy(str2,stack);
    if(strcmp(str2,str1)==0)
    {
        printf("True ( %s == %s )",str1,str2);
    }
    else
    {
        printf("False ( %s != %s )",str1,str2);
    }
    return 0;
}

OUTPUT :





Longest Palindromic Substring

Given a string S,find the longest palindromic substring in S.

Sample Input 1    : abaxabaxabb
Sample Output 1  : baxabaxab

Sample Input 2     : babad
Sample Output 2   : bab   (aba also correct)

Sample Input 3   : baad
Sample Output 3 : aa


#include <stdio.h>
#include<string.h>
int main()
{
    char str[50],tmp[50],pal[50];
    int len3=0,len2=0,a=0,len,i,j,k,front,back,count=0;
    gets(str);
    len=strlen(str);
    //palindromic substring of length 3 or more
    for(i=1;i<len;i++)
    {
        front=i+1;
        back=i-1;
        a=0;
        while(back>=0 && front<len)
        {
            if(str[front]==str[back])
            {
                a=0;
                for(k=back;k<=front;k++)
                {
                    tmp[a]=str[k];
                    a++;
                }
                len2=strlen(tmp);
                front++;
                back--;
            }
            else{
                break;
            }
        }
       
        if(len2>len3)
        {
            strcpy(pal,tmp);
            len3=len2;
            count++; // check whether palindromic substring length is 3 or more
        }
    }
    //palindromic substring of length 2
    if(count==0)
    {
        for(i=0;i<len;i++)
        {
            if(str[i]==str[i+1])
            {
                printf("%c%c",str[i],str[i+1]);
                break;
            }
        }
    }
    else
    {
    puts(pal);
    }
    return 0;
}

OUTPUT :






Newer Posts Older Posts Home

SUBSCRIBE & FOLLOW

POPULAR POSTS

  • Reverse string model
  • Counting Rock Samples
  • Traversal in BST
  • Check palindrome without using library functions
  • Nth term for the given series
  • JBM awards 2k18
  • Mr.X revealed!
  • Mersal Movie Review
  • U Turn Movie Review
  • Vada Chennai Review

Categories

  • Awards 4
  • Code 23
  • Review 16
  • sport 1
  • Tech 2
  • Update 14

Contact Form

Name

Email *

Message *

  • ▼  2020 (1)
    • ▼  July (1)
      • Middlewares in Express JS
  • ►  2019 (7)
    • ►  October (1)
    • ►  July (1)
    • ►  February (1)
    • ►  January (4)
  • ►  2018 (33)
    • ►  October (2)
    • ►  September (3)
    • ►  August (1)
    • ►  July (3)
    • ►  June (4)
    • ►  April (8)
    • ►  March (7)
    • ►  February (1)
    • ►  January (4)
  • ►  2017 (17)
    • ►  December (3)
    • ►  November (6)
    • ►  October (8)

Search This Blog

Powered by Blogger.

Report Abuse

HOME

  • HOME
  • Code Block
  • Tech World
  • How is it?
  • What's Up?
  • JoBatMovie_Awards
  • Sports Block
  • Privacy Policy

JoBatMovie Awards

  • Home
  • JoBatMovie Awards
  • Home

Featured post

JBM awards 2k18

JoBat Updates

Designed by OddThemes | Distributed by Gooyaabi Templates