Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #define N 20
- int main()
- {
- // ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
- char way[200];
- char predl[80]; // Введенное предложение
- char res[80]; // Результирующее предложение
- char slova[N][N]; // Массив слов в предложении
- char razd [N][N]; // Массив разделителей в предложении
- int sl=-1, rz=-1; // Счетчики слов и разделителей
- char *b="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";// Буквы строчные
- char *bm ="QWERTYUIOPASDFGHJKLZXCVBNM";// Буквы заглавные
- char *r="`!;:,.?- "; // Разделительные знаки
- char *gl="eyuioaEYUIOA";
- // Заголовок программы
- // Title ();
- // Ввод предложения
- InpPredl (predl, way);
- // Выделение из предложения слов
- Select (predl, slova, r, &sl);
- // Выделение из предложения разделителей
- // strcat (b, bm);
- Select (predl, razd, b, &rz);
- // Сборка предложения
- Constructor(slova, razd, sl, rz, res);
- // Вывод результата
- OutPredl (predl, res, way);
- free (res);
- }
- // Заголовок программы
- int Title()
- {
- // clrscr ();
- puts (" Лабораторное задание N 8");
- puts (" Во введенном предложении расположите слова");
- puts (" в обратной последовательности.");
- puts(" Порядок следования знаков препинания не менять.");
- puts(" В предложении используются русские буквы и знаки. \n");
- }
- // Ввод предложения
- int InpPredl(char *s, char way[])
- {
- // char way[200];
- puts("Enter a way to a file\n");
- // strcpy (s," Верите ли вы, что задача решена?");
- gets (way);
- FILE *file;
- if ((file = fopen(way,"r")) == NULL)
- printf("Input error. The file cannot be opened or created\n");
- else fgets(s, 80, file); // fscanf(file,"%s", s);
- fclose(file);
- }
- // Вывод результата
- int OutPredl (char *s1, char *s2, char way[])
- {
- // puts ("Исходное предложение");
- puts("Ishod:");
- puts (s1);
- // puts (" Результат ");
- puts("Result:");
- puts (s2);
- FILE *file;
- if ((file = fopen(way,"a+")) == NULL)
- printf("Output error. The file cannot be opened or created\n");
- else
- {
- fputs("\n", file);
- fputs(s2, file); // fscanf(file,"%s", s);
- }
- fclose(file);
- getch ();
- }
- // Выделение из предложения
- int Select(const char *predl, char m[][N], char *sel, int *n)
- {
- char *p, *s;
- s=strdup (predl); // Сделать копию исходного предложения
- // так как передается константа, strtok требует
- // внесения изменений при своей работе
- p = strtok (s, sel);
- while (p)
- {
- (*n)++;
- strcpy (m[*n],p);
- p = strtok (NULL, sel);
- }
- free (s);
- }
- // Сборка предложения
- int Constructor(char slova[][N], char razd[][N], int sl, int rz, char res[])
- {
- int i, j, o;
- int kol=-1;
- // char res[80];
- char temp[N][N];
- char st[N];
- char *gl="eyuioaEYUIOA";
- char *s;
- *res=0; // Начальное значение результата
- i = -1;
- j=-1;
- while ((i<=sl)||(j<=rz))
- {
- kol=-1;
- i++;
- Select (slova[i], temp, gl, &kol);
- *st=0;
- for (o=0; o<=kol; o++)
- strcat (st, temp[o]);
- if ((i<=sl)) strcat (res, st); // Добавление слова
- j++;
- if ((j<=rz)) strcat (res, razd[j]); // Добавление знаков
- }
- // puts(res);
- // stroka = strdup (res);
- // stroka=s;
- // return (st);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement