@Gene : yes you are right , i misunderstood the problem . so m/m available is just enough to hold the output. thanks for correcting ... that would make this ques little interesting :) :)...i guess my first posted code can be modified to meet the requirement. i will post the updated code.
On Tue, Mar 20, 2012 at 5:45 PM, Gene <gene.ress...@gmail.com> wrote: > I don't think you're seeing the requirement completely. The problem > promises only that the output buffer will be big enough to hold the > output. You have made it huge. I tried your code on an input of > > a1b1c6 > > with the required output space of 8 characters (plus 1 for the C null > character), and it printed > > cccccc > > and stopped. > > Last night I realized there is another approach that will work in all > cases, so I deleted my post. I guess it wasn't deleted on the server > in your part of the world. > > You all can certainly work it out. You can't just copy the input to a > predetermined place in the buffer before processing it. It needs to be > placed carefully, and it needs to be processed from both ends to a > certain point in the middle. > > On Mar 20, 7:32 am, atul anand <atul.87fri...@gmail.com> wrote: > > using Gene logic , but we need to take care of number with more than 1 > > digits , so updated gene's code is as follows :- > > > > #include<stdio.h> > > #define MAX 1000 > > > > int copy(char *str,int len) > > { > > int max_len=MAX-1,i; > > for(i=len-1;i>=0;i--) > > { > > str[max_len]=str[i]; > > max_len--; > > } > > return max_len+1; > > > > } > > > > void runLength(char *str) > > { > > unsigned int j,k=1,loop=0,res_len=0; > > int i,n_start; > > char c; > > /*copying input to the end of the buffer*/ > > n_start=copy(str,strlen(str)); > > > > for(i=MAX-1;i>=n_start;i--) > > { > > if(str[i]>='0' && str[i]<='9') > > { > > continue; > > } > > else > > { > > sscanf(&str[i],"%c%d",&c,&loop); > > for(j=0;j<loop;j++) > > { > > str[res_len]=c; > > res_len++; > > } > > } > > } > > str[res_len]='\0'; > > printf("\nDecoded Msg = %s\n",str); > > > > } > > > > int main() > > { > > char str[MAX]; > > memset(&str,0,MAX); > > printf("\nEnter String = "); > > scanf("%s",str); > > runLength(str); > > > > return 1; > > > > > > > > > > > > > > > > } > > -- > You received this message because you are subscribed to the Google Groups > "Algorithm Geeks" group. > To post to this group, send email to algogeeks@googlegroups.com. > To unsubscribe from this group, send email to > algogeeks+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/algogeeks?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.