Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <locale.h>
- #include <stdlib.h>
- #include <time.h>
- #include <stdbool.h>
- void TextMassage();//Вывод услови задачи
- void CreateFile();//Генерация цепочек(слов),отбор по условию , запись в файл.
- void OutputToConsloe();//Вывод с файла в консоль.
- int M =15;//количество строк которые выведит программа с файла
- char V [3]={'a','b','c'};//алфавит формального языка .
- main()
- {
- TextMassage();
- srand(time(NULL));
- CreateFile();
- OutputToConsloe();
- }
- void TextMassage()
- {
- setlocale(LC_ALL,"UA");
- printf ("Задание:\nСоздать программу на языке С , которая будет продуцировать \nцепочки (слова) в трехсимвольном алфавите V={a,b,c} с записью их в файл, причем\nдлина L цепочек ограничена: L1 <= L <= L2 и для каждой цепочки, отобранной в\nфайл, должно выполняться условие < A >.Общее количество цепочек вфайле должно быть не более M.\nУсловие < A >:\nСодержит не менее двух символов «с», начинается на символ «а», а символ «b»\nвстречается только по два (парами)\nL1 = 5\tL2 = 10\tM = 15\n");
- }
- void CreateFile()
- {
- FILE *InputFile = fopen("input.txt","w");
- int counter ;//предел генерации слов
- int counter_c ;//счетсчик количества с
- int counter_db ;//cчетчик встреч b НЕ по два
- int counter_b;//cчетчик встреч b
- //нужно два счетчика b для исключения ситуаций "bbb"
- bool a ;//истинность условия что а перове
- for(counter =0,counter_c=0,counter_db=0,counter_b=0;counter<1024;counter++,a =false,counter_c=0,counter_db=0,counter_b=0)
- {
- int L =5 + rand()%6;
- char Line[L];
- for(int i =0 ;i<L ;i++)
- {
- Line[i]=V[rand()%3];
- }
- if(Line[0]==V[0])
- {
- a=true;
- for(int i =1 ;i<L ;i++)
- {
- if(Line[i]==V[2])
- {
- counter_c++;
- }
- if(Line[i]==V[1]&&Line[i-1]!=V[1]&&Line[i+1]!=V[1])
- {
- counter_db++;//abbbaac abcbb abbbbabca
- }
- if(Line[i]==V[1])
- {
- counter_b++;//abbbaac abcbb abbbbabca
- }
- }
- }
- if(a==true&&counter_c>=2&&counter_db==0&&counter_b%2==0)
- {
- for(int i =0 ;i<L ;i++)
- if(i<L-1)
- fprintf(InputFile,"%c",Line[i]);
- else
- fprintf(InputFile,"%c\n",Line[i]);
- }
- }
- fclose(InputFile);
- }
- void OutputToConsloe()
- {
- FILE *InputFile = fopen("input.txt","r");
- char str[10];
- int line_counter;
- for(line_counter=0;line_counter<=M;line_counter++)
- {
- fscanf(InputFile,"%s",str);
- if(line_counter>0)//пропустил 0 из-за бага ,в файл первой строкой записывается цепочка не подходящая к условию
- printf("%s\n",str);
- }
- _getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement