C Program to Frame sorting technique used in buffers.

How to write a C Program to Frame sorting technique used in buffers in C Programming Language ?


Solution:

  1. #include<stdio.h>
  2. #include<string.h>
  3. #define FRAM_TXT_SIZ 3
  4. #define MAX_NOF_FRAM 127
  5. char str[FRAM_TXT_SIZ*MAX_NOF_FRAM];
  6. struct frame // structure maintained to hold frames
  7. { char text[FRAM_TXT_SIZ];
  8. int seq_no;
  9. }fr[MAX_NOF_FRAM], shuf_ary[MAX_NOF_FRAM];
  10. int assign_seq_no() //function which splits message
  11. { int k=0,i,j; //into frames and assigns sequence no
  12. for(i=0; i < strlen(str); k++)
  13. { fr[k].seq_no = k;
  14. for(j=0; j < FRAM_TXT_SIZ && str[i]!='\0'; j++)
  15. fr[k].text[j] = str[i++];
  16. }
  17. printf("\nAfter assigning sequence numbers:\n");
  18. for(i=0; i < k; i++)
  19. printf("%d:%s ",i,fr[i].text);
  20. return k; //k gives no of frames
  21. }
  22. void generate(int *random_ary, const int limit) //generate array of random nos
  23. { int r, i=0, j;
  24. while(< limit)
  25. { r = random() % limit;
  26. for(j=0; j < i; j++)
  27. if( random_ary[j] == r )
  28. break;
  29. if( i==) random_ary[i++] = r;
  30. } }
  31. void shuffle( const int no_frames ) // function shuffles the frames
  32. {
  33. int i, k=0, random_ary[no_frames];
  34. generate(random_ary, no_frames);
  35. for(i=0; i < no_frames; i++)
  36. shuf_ary[i] = fr[random_ary[i]];
  37. printf("\n\nAFTER SHUFFLING:\n");
  38. for(i=0; i < no_frames; i++)
  39. printf("%d:%s ",shuf_ary[i].seq_no,shuf_ary[i].text);
  40. }
  41. void sort(const int no_frames) // sorts the frames
  42. {
  43. int i,j,flag=1;
  44. struct frame hold;
  45. for(i=0; i < no_frames-1 && flag==1; i++) // search for frames in sequence
  46. {
  47. flag=0;
  48. for(j=0; j < no_frames-1-i; j++) //(based on seq no.) and display
  49. if(shuf_ary[j].seq_no > shuf_ary[j+1].seq_no)
  50. {
  51. hold = shuf_ary[j];
  52. shuf_ary[j] = shuf_ary[j+1];
  53. shuf_ary[j+1] = hold;
  54. flag=1;
  55. }
  56. }
  57. }
  58. int main()
  59. {
  60. int no_frames,i;
  61. printf("Enter the message: ");
  62. gets(str);
  63. no_frames = assign_seq_no();
  64. shuffle(no_frames);
  65. sort(no_frames);
  66. printf("\n\nAFTER SORTING\n");
  67. for(i=0;i<no_frames;i++)
  68. printf("%s",shuf_ary[i].text);
  69. printf("\n\n");
  70. }

OUTPUT C Program to Frame sorting technique used in buffers.:

[root@localhost nwcn]# ./a.out
Enter the message: Welcome To Acharya Institute of Technology
After assigning sequence numbers:
0:Wel 1:com 2:e T 3:o A 4:cha 5:rya 6: In 7:sti 8:tut 9:e o 10:f T 11:ech 12:nol 13:ogy
AFTER SHUFFLING:
1:com 4:cha 9:e o 5:rya 3:o A 10:f T 2:e T 6: In 11:ech 13:ogy 0:Wel 8:tut 12:nol 7:sti
AFTER SORTING
Welcome To Acharya Institute of Technology


Learn More :