< Back to forum

problem in using gets() and getchar()

i am solving problem CHEFGP ( https://www.codechef.com/problems/CHEFGP ).....and the outputs are coming correct....bt outputs are cominng only for (t/2) cases instesd of t cases.....and the notable thing is that there are two new lines between consecutive outputs.....so is there any mistake in using gets() and getchar()......or i am missing somewhere else,,,,,some1 pllz look at it....here my code goes.....

#include<stdio.h>
#include<string.h>
int main()
{
 long int t;
 scanf("%ld",&t);
 getchar();
 while(t--)
 {
 
  char a[100010];
  gets (a);
  long int x,y;
  scanf("%ld %ld",&x,&y);
  long int tota=0,totb=0,acount=0,bcount=0,j=0,i;
  while (a[j]!='\0')
  {
   if(a[j]=='a')
   {
    tota++;
   }
   
   
    if(a[j]=='b')
   {
     totb++;
   }
   j++;
  }

  for(i=0;a[i]!='\0';i++)
  {
   if(a[i]=='a')
   {
    
    if((acount<x)&&(tota>0))
    {
     printf("a");
     acount++;
     tota--;
     bcount=0;
    }
    else if((bcount<y)&&(totb>0))
    {
     printf("b");
     bcount++;
     totb--;
     acount=0;
    }
    else
    {
     printf("*");
        if(tota>=totb)
        {
         
      
         printf("a");
         tota--;
         acount=1;
         bcount=0;
     }
     if(tota<totb)
     {
      printf("b");
      totb--;
      bcount=1;
      acount=0;
     }
     
    }
    
   }
   else
   {
    if((bcount<y)&&(totb>0))
    {
     printf("b");
     bcount++;
     totb--;
     acount=0;
    }
    else if((acount<x)&&(tota>0))
    {
     printf("a");
     acount++;
     tota--;
     bcount=0;
    }
    else
    {
     printf("*");
      if(tota>=totb)
        {
         printf("a");
         tota--;
         acount=1;
         bcount=0;
     }
     if(tota<totb)
     {
      printf("b");
      totb--;
      bcount=1;
      acount=0;
     }
    }
   }
  }
 printf("\n");
 }
 return 0;
}

Asked by: Abhishek_Chaudhary on April 7, 2019, 6:34 p.m. Last updated on April 7, 2019, 6:34 p.m.


Enter your answer details below:


Enter your comment details below:




2 Answer(s)

avatar

use :

  scanf("%s",&a);

inplace of:

  gets(a);

 avoid the use of gets() whenever possible.

Shubham_Kumar_Gupta last updated on April 7, 2019, 6:34 p.m. 0    Reply    Upvote   

avatar
  scanf("%s",a); //(no & before a)

 

Shubham_Kumar_Gupta last updated on April 7, 2019, 6:34 p.m. 0    Reply    Upvote   

Instruction to write good question
  1. 1. Write a title that summarizes the specific problem
  2. 2. Pretend you're talking to a busy colleague
  3. 3. Spelling, grammar and punctuation are important!

Bad: C# Math Confusion
Good: Why does using float instead of int give me different results when all of my inputs are integers?
Bad: [php] session doubt
Good: How can I redirect users to different pages based on session data in PHP?
Bad: android if else problems
Good: Why does str == "value" evaluate to false when str is set to "value"?

Refer to Stack Overflow guide on asking a good question.