Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.33 KB | None | 0 0
  1. #include <locale.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. void vyvod(char **m, int a);
  7. int fail(char *slv, char **m);
  8. int schityv(char *slv, char **m);
  9. void sort(char **m, int a);
  10. void razbienie(char **m, int a);
  11. int proverka(char ch);
  12.  
  13. int main(void){
  14. setlocale(LC_ALL, "");
  15. char slv[1000], *m[50];
  16. int a = 0;
  17.  
  18. a = schityv(slv, m);
  19.  
  20. vyvod(m, a);
  21. sort(m, a);
  22. vyvod(m, a);
  23. razbienie(m, a);
  24.  
  25. return 0;
  26. }
  27.  
  28. void vyvod(char **m, int a){
  29. printf("\nCлова:\n");
  30. for (int i=0; i<a; i++)
  31. printf("\n%2d: %s", i+1, m[i]);
  32.  
  33. printf("\n________________________________________________\n");
  34. }
  35.  
  36. int proverka(char ch){//проверка на то, что символ ch это буква
  37. if((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))
  38. return 1;
  39.  
  40. return 0;
  41. }
  42.  
  43. int schityv(char *slv, char **m){
  44. char ch;
  45. int t=0, a=1;
  46. printf("\nВведите не меньше 3х слов:\n");
  47. m[0] = &slv[0]; //указатель на первое слово
  48. ch = 0;
  49. while (ch != 10){
  50. ch = getchar();
  51. if(proverka(ch))
  52. slv[t++] = ch;
  53. else
  54. if(t!=0 && slv[t-1]!='\0'){
  55. slv[t++] = '\0';
  56. m[a++] = &slv[t];}}
  57. return (a-1);
  58. }
  59.  
  60. void sort(char **m, int a){
  61. int q=0;
  62. char *w;
  63. for(int i=0; i<a-1; i++, q=i){
  64. for(int j=i+1; j<a; j++)
  65. if(strcmp(m[q], m[j]) > 0)
  66. q = j;
  67. if (q!=i){
  68. w = m[i];
  69. m[i] = m[q];
  70. m[q] = w;}}
  71. }
  72.  
  73. int fail(char *slv, char **m){
  74. FILE *f;
  75. f = fopen("Fail.txt", "r");
  76. int a=1, t=0;
  77. m[0] = &slv[0];
  78.  
  79. while(!feof(f)){
  80. slv[t++] = getc(f);
  81. if(slv[t-1] == 10 || slv[t-1] == '\n')
  82. if(t != 0 && slv[t-2] != '\0'){
  83. slv[t++] = '\0';
  84. m[a++] = &slv[t];}}
  85. fclose(f);
  86. return (a-1);
  87. }
  88.  
  89. void razbienie(char **m, int a){
  90. int i=1, j, blok=a/3, bloki[3]={0,0,0};
  91. for(j=0, i=(j*blok); j<3; ++j ){
  92. if(j==0)
  93. printf("a-");
  94. else
  95. printf("%c-", *m[i]);
  96. while(i<a && (i<=((j+1)*blok) || *m[i]==*m[i-1] || bloki[j]==0)){
  97. bloki[j]++;
  98. ++i;}
  99.  
  100. if(j==2){
  101. printf("z");
  102. printf(":%d; ", bloki[j]);}
  103. else{
  104. printf("%c", *m[i-1]);
  105. printf(":%d; ", bloki[j]);}}
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement