Advertisement
Guest User

Untitled

a guest
Jun 4th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.12 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #define N 20
  6. int main()
  7. {
  8. // ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
  9.     char way[200];
  10.    char predl[80]; // Введенное предложение
  11.     char res[80]; // Результирующее предложение
  12.     char slova[N][N]; // Массив слов в предложении
  13.     char razd [N][N]; // Массив разделителей в предложении
  14.     int sl=-1, rz=-1; // Счетчики слов и разделителей
  15.     char *b="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";// Буквы строчные
  16.     char *bm ="QWERTYUIOPASDFGHJKLZXCVBNM";// Буквы заглавные
  17.     char *r="`!;:,.?- "; // Разделительные знаки
  18.     char *gl="eyuioaEYUIOA";
  19. // Заголовок программы
  20. //    Title ();
  21. // Ввод предложения
  22.     InpPredl (predl, way);
  23. // Выделение из предложения слов
  24.     Select (predl, slova, r, &sl);
  25. // Выделение из предложения разделителей
  26. //    strcat (b, bm);
  27.     Select (predl, razd, b, &rz);
  28. // Сборка предложения
  29.     Constructor(slova, razd, sl, rz, res);
  30. // Вывод результата
  31.     OutPredl (predl, res, way);
  32.     free (res);
  33. }
  34. // Заголовок программы
  35. int Title()
  36. {
  37. //    clrscr ();
  38.     puts (" Лабораторное задание N 8");
  39.     puts (" Во введенном предложении расположите слова");
  40.     puts (" в обратной последовательности.");
  41.     puts(" Порядок следования знаков препинания не менять.");
  42.     puts(" В предложении используются русские буквы и знаки. \n");
  43. }
  44. // Ввод предложения
  45. int InpPredl(char *s, char way[])
  46. {
  47. //    char way[200];
  48.     puts("Enter a way to a file\n");
  49. //    strcpy (s," Верите ли вы, что задача решена?");
  50.     gets (way);
  51.     FILE *file;
  52.      if ((file = fopen(way,"r")) == NULL)
  53.         printf("Input error. The file cannot be opened or created\n");
  54.      else fgets(s, 80, file); // fscanf(file,"%s", s);
  55.      fclose(file);
  56. }
  57. // Вывод результата
  58. int OutPredl (char *s1, char *s2, char way[])
  59. {
  60. //    puts ("Исходное предложение");
  61.     puts("Ishod:");
  62.     puts (s1);
  63. //    puts (" Результат ");
  64.     puts("Result:");
  65.     puts (s2);
  66.     FILE *file;
  67.      if ((file = fopen(way,"a+")) == NULL)
  68.         printf("Output error. The file cannot be opened or created\n");
  69.      else
  70.        {
  71.            fputs("\n",  file);
  72.           fputs(s2,  file); // fscanf(file,"%s", s);
  73.        }
  74.      fclose(file);
  75.     getch ();
  76. }
  77. // Выделение из предложения
  78. int Select(const char *predl, char m[][N], char *sel, int *n)
  79. {
  80.     char *p, *s;
  81.     s=strdup (predl); // Сделать копию исходного предложения
  82. // так как передается константа, strtok требует
  83. // внесения изменений при своей работе
  84.     p = strtok (s, sel);
  85.     while (p)
  86.     {
  87.         (*n)++;
  88.         strcpy (m[*n],p);
  89.         p = strtok (NULL, sel);
  90.     }
  91.     free (s);
  92. }
  93. // Сборка предложения
  94. int Constructor(char slova[][N], char razd[][N], int sl, int rz, char res[])
  95. {
  96.     int i, j, o;
  97.     int kol=-1;
  98. //    char res[80];
  99.     char temp[N][N];
  100.     char st[N];
  101.     char *gl="eyuioaEYUIOA";
  102.     char *s;
  103.     *res=0; // Начальное значение результата
  104.     i = -1;
  105.     j=-1;
  106.     while ((i<=sl)||(j<=rz))
  107.     {
  108.         kol=-1;
  109.         i++;
  110.         Select (slova[i], temp, gl, &kol);
  111.         *st=0;
  112.         for (o=0; o<=kol; o++)
  113.           strcat (st, temp[o]);
  114.  
  115.         if ((i<=sl)) strcat (res, st); // Добавление слова
  116.         j++;
  117.         if ((j<=rz))  strcat (res, razd[j]); // Добавление знаков
  118.     }
  119. //    puts(res);
  120. //    stroka = strdup (res);
  121. //    stroka=s;
  122.  //   return (st);
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement