Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовая работа
.CPP#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <alloc.h>
#include <process.h>
//Їа®в®вЁЇл ЁбЇ®«м§гҐ¬ле дгЄжЁ©
//дгЄжЁЁ ¤«п а Ў®вл б® бва®Є ¬Ё
char* get_word(char*, char*); //Ї®«г票Ґ б«®ў Ё§ бва®ЄЁ
int count_str(char*, const char*); //Ї®¤бзсв ®¤Ё Є®ўле б«®ў
///////////////////////////////////////////////////////////////////////////////
void strdel(char*, char*, int); //г¤ «ҐЁҐ бЁ¬ў®«®ў Ё§ бва®ЄЁ
void strins(char*, const char*, char*); //ўбв ўЄ н«Ґ¬Ґв®ў ў бва®Єг
void sortstr(char *); //б®авЁа®ўЄ бва®ЄЁ бЁ¬ў®«®ў Ї® ў®§а бв Ёо
void rebuildstr(char *); //ЇҐаҐбва®©Є Ї®ап¤Є Ј« бле ў б«®ў е бва®ЄЁ
///////////////////////////////////////////////////////////////////////////////
void replace_word(char*, char*); //§ ¬Ґ ®¤®Ј® б«®ў ¤агЈЁ¬
int read_str(char **); //бзЁв뢥ЁҐ бва®Є
void free_str(char **, int); //®зЁбвЄ Ї ¬пвЁ ®в бва®Є
void main (void)
{
char *t[22], //гЄ § ⥫Ё бва®ЄЁ
ss[81], //бва®Є ¤«п Ї®ЁбЄ
sr[81], //Ё Є®в®аго ¬ҐпҐ¬
ch;
int k, //Є®«ЁзҐбвў® бва®Є ўўҐ¤сле ў Ї ¬пвм (Ґ Ў®«ҐҐ 22)
ks, //ЁбЄ®¬®Ґ Є®«-ў® Ї®ўв®аҐЁ©
i,kt;
do //®б®ў®© жЁЄ«
{
clrscr();
printf("************* ђ Ў®в б® бва®Є ¬Ё ***************");
//ўў®¤Ё¬ ¬ ббЁў бва®Є Ё ®бв «млҐ Ёбе®¤лҐ ¤ лҐ
k=read_str(t);
/* printf("\n‚ўҐ¤ЁвҐ ЁбЄ®¬®Ґ б«®ў® ");
gets(ss);
/* printf("\n‚ўҐ¤ЁвҐ Є®«-ў® Ї®ўв®аҐЁ© ЁбЄ®¬®Ј® б«®ў ");
scanf("%d", &ks);
printf("\n‚ўҐ¤ЁвҐ б«®ў®-§ ¬Ґг ");
fflush(stdin);
gets(sr);
*/ //ўлў®¤Ё¬ ўўҐ¤слҐ ¤ лҐ
clrscr();
puts("\n‚ўҐ¤сл© вҐЄбв: ");
for(i=0; i<k; i++)
puts(t[i]);
printf("\n\n");
/* printf("\n€бЄ®¬®Ґ б«®ў®: %s \n", ss);
printf("‘«®ў®-§ ¬Ґ : %s \n", sr);
printf("Љ®«ЁзҐбвў® Ї®ўв®аҐЁ© ЁЄ®¬®Ј® б«®ў ў бва®ЄҐ : %d \n", ks);
for(i=0; i<k; i++)
{
kt=count_str(t[i],ss);
printf("\nЏ®ўв®аҐЁ© ЁбЄ®¬®Ј® б«®ў %d",kt );
replace_word(t[i],"fuck ");
}
*/
for (i=0; i<k; i++)
rebuildstr(t[i]);
puts("\n\n");
puts("\n‚ўҐ¤сл© вҐЄбв: ");
for(i=0; i<k; i++)
puts(t[i]);
printf("\n\n");
//®зЁй Ґ¬ бв ал© вҐЄбв
free_str(t,k);
printf("\n„«п Їа®¤®«¦ҐЁп ¦¬ЁвҐ «оЎго Є« ўЁиг\n"
"„«п ўл室 ¦¬ЁвҐ <ESC>");
fflush(stdin);
ch=getch();
}
while (ch!=27); //Є®Ґж ®б®ў®Ј® жЁЄ«
}
//----------------------------------------
//дгЄжЁп ўл¤Ґ«пҐв Ё§ бва®ЄЁ
//б«®ў® Ё ў®§ўа й Ґв ҐЈ®, Ґб«Ё бва®Є Ґ Є®зЁ« бм
//ў®§ўа й Ґвбп гЄ § ⥫м бЁ¬ў®«, б«Ґ¤гойЁ© § б«®ў®¬
char* get_word(char *st, char *w)
{
char *pst;
int l=0;
pst=st;
while ( (*pst == ' ')||(*pst == '.')||(*pst == ',')||(*pst == ';')||
(*pst == '!')||(*pst == '?') )
pst++;
if (*pst)
{
while ((*pst)&&(*pst != ' ')&&(*pst != '.')&&(*pst != ',')&&(*pst != ';')&&
(*pst != '!')&&(*pst != '?'))
{
l++;
pst++;
}
strncpy(w, pst-l, l);
w[l]='\0';
}
else
w[0]='\0';
if (!*pst)
return NULL;
return pst;
}
//----------------------------------------
//дгЄжЁп Ї®¤бзЁвлў Ґв Є®«-ў® Ї®ўв®аҐЁ© ЁбЄ®¬®Ј® б«®ў ў бва®ЄҐ
int count_str(char* st, const char* wd)
{
char *t3, *t2;
int c=0;
t2=st;
t3=(char *) malloc(sizeof(char)*81);
do
{
t2=get_word(t2, t3);
if (!strcmp(t3, wd))
c++;
} while (t2!=NULL);
free(t3);
return c;
}
//----------------------------------------
//dest_str - бва®Є ў Є®в®аго ўбв ў«пҐ¬
//src_str - нв® ¬л ўбв ў«пҐ¬
//pt - ¬Ґбв® ў Є®в®а®Ґ ¬л ўбв ў«пҐ¬
void strins(char* dest_str, const char* src_str, char* pt)
{
char *st3, *st2;
int l=0;
// 室Ё¬ а ббв®пЁҐ ®в з « бва®ЄЁ ¤® ¬Ґбв ўбв ўЄЁ
st2=pt;
while (dest_str!=st2)
{
l++;
st2--;
}
st3=(char *) malloc(sizeof(char)*81);
//Є®ЇЁа㥬 Ёб室го бва®Єг
//®ЎаҐ§ Ґ¬ бва®Єг ¤® бЁ¬ў®« Є®в®ал© гЄ §л Ґв, pt
strcpy(st3, dest_str);
st3[l]='\0';
//¤®Ў ў«пҐ¬ зв® е®вҐ«Ё, § ⥬ Їа®¤®«¦ҐЁҐ бв а®© бва®ЄЁ
strcat(st3, src_str);
strcat(st3, pt);
//ў®§ўа й Ґ¬ १г«мв в
strcpy(dest_str, st3);
free(st3);
}
//----------------------------------------
//dest_str - бва®Є , Є®в®аго ०Ґ¬
//pt - гЄ § ⥫м бЁ¬ў®«, б Є®в®а®Ј® ०Ґ¬
//l - Є®«ЁзҐбвў® ўл१ Ґ¬ле бЁ¬ў®«®ў
void strdel(char* dest_str, char* pt, int l)
{
char *st3, *st2;
int i=0;
// 室Ё¬ а ббв®пЁҐ ®в з « бва®ЄЁ ¤® г¤ «пҐ¬®© з бвЁ
st2=pt;
while (dest_str!=st2)
{
i++;
st2--;
}
st3=(char *) malloc(sizeof(char)*81);
//Є®ЇЁа㥬 Ёб室го бва®Єг
//®ЎаҐ§ Ґ¬ бва®Єг ¤® бЁ¬ў®« Є®в®ал© гЄ §л Ґв, pt
strcpy(st3, dest_str);
st3[i]='\0';
//ᮥ¤ЁпҐ¬ бва®Єг б Їа®¤®«¦ҐЁҐ¬ Ї®б«Ґ ўл१ ле бЁ¬ў®«®ў
st2=pt+l;
strcat(st3, st2);
//ў®§ўа й Ґ¬ १ го бва®Єг
strcpy(dest_str, st3);
free(st3);
}
//---------------------------------------
//st бва®Є ў Є®в®а®© б®авЁа㥬 Ј« блҐ
void sortstr(char *st)
{
char *t3, *t2, *t1, m, t;
int ci=0, i, im, j;
t3=(char *) malloc(sizeof(char)*81); //ўл¤Ґ«пҐ¬ Ї ¬пвм ¤«п ўаҐ¬Ґ®© ЇҐаҐ¬Ґ®©
t2=st;
t1=t3;
//ᮧ¤ с¬ ¬ ббЁў Ј« бле ЎгЄў
while (*t2)
{
// ҐЁ®глноп
//!!!!!!!„®Ў ўЁвм § Ј« ўлҐ ЎгЄўл!!!!!!!!!!!!!
if ((*t2 == ' ')||(*t2 == 'Ґ')||(*t2 == 'Ё')||
(*t2 == '®')||(*t2 == 'г')||(*t2 == 'л')||(*t2 == 'н')||
(*t2 == 'о')||(*t2 == 'п'))
{
*t1=*t2;
t1++;
ci++;
}
t2++;
}
//¬ ббЁў бЁ¬ў®«®ў t3 еа Ёв ўбҐ Ј« блҐ ЎгЄўл б«®ў
//б®авЁа®ўЄ ¬Ґв®¤®¬ ЇҐаҐбв ®ўЄЁ
for (i=ci-1; i>=1; i--)
//Ї®Є Ґбвм е®вп Ўл ¤ў Ґ®вб®авЁа®ў ле н«Ґ¬Ґв
{
// 室Ё¬ ЁЎ®«миЁ© н«Ґ¬Ґв
im=0;
m=t3[0];
for (j=1;j<=i;j++)
if (m<t3[j])
{
m=t3[j];
im=j;
}
//¬ҐпҐ¬ ¬Ґбв Ё б Ї®б«Ґ¤Ё¬ Ґ®вб®авЁа®ў л¬ н«Ґ¬Ґв®¬
t=t3[i];
t3[i]=t3[im];
t3[im]=t;
}
t2=st;
//ўЇЁблў Ґ¬ Ј« блҐ Ї® ®ў®¬г Ї®ап¤Єг
ci=0;
while (*t2)
{
// ҐЁ®глноп
//!!!!!!!!!!!!!!„®Ў ўЁвм § Ј« ўлҐ ЎгЄўл!!!!!!!!!
if ((*t2 == ' ')||(*t2 == 'Ґ')||(*t2 == 'Ё')||
(*t2 == '®')||(*t2 == 'г')||(*t2 == 'л')||(*t2 == 'н')||
(*t2 == 'о')||(*t2 == 'п'))
{
*t2=t3[ci];
ci++;
}
t2++;
}
free(t3);
return;
}
//---------------------------------------
//st ЇҐаҐбва Ёў Ґ¬ п бва®Є
void rebuildstr(char *st)
{
char *t3, *t2, *t1;
t3=(char *) malloc(sizeof(char)*81); //ўл¤Ґ«пҐ¬ Ї ¬пвм ¤«п ўаҐ¬Ґ®© ЇҐаҐ¬Ґ®©
t2=st;
do
//Ї®Є ў бва®ЄҐ Ґбвм б«®ў
{
t1=t2;
//Їлв Ґ¬бп Ї®«гзЁвм гЄ § вҐ«м ЇҐаўл© бЁ¬ў®« ®зҐаҐ¤®Ј® б«®ў
while ( (* t1== ' ')||(*t1 == '.')||(*t1 == ',')||(*t1 == ';')||
(*t1 == '!')||(*t1 == '?') )
t1++;
t2=get_word(t2, t3); //ЎҐас¬ ®зҐаҐ¤®Ґ б«®ў®
if (*t3)
//Ґб«Ё Ї®«гзЁ«Ё б«®ў®
{
//б®авЁа®гҐ¬ Ј« блҐ ў б«®ўҐ
sortstr(t3);
//ўбв ў«пҐ¬ ¬Ґбв® бв а®Ј® б«®ў ®ў®Ґ
strdel(st,t1,strlen(t3));
strins(st,t3,t1);
}
} while (t2!=NULL);
//®бў®Ў®¦¤ Ґ¬ Ї ¬пвм
free(t3);
return;
}
//----------------------------------------
void replace_word(char *st, char *wd)
{
char *t3, *t2, *t1;
int l=0;
t3=(char *) malloc(sizeof(char)*81);
t2=get_word(st, t3);
t1=st;
while ( (* t1== ' ')||(*t1 == '.')||(*t1 == ',')||(*t1 == ';')||
(*t1 == '!')||(*t1 == '?') )
{
t1++;
l++;
}
if(*t1)
{
strcpy(t3,st);
t3[l]='\0';
strcat(t3, wd);
strcat(t3, t2);
strcpy(st, t3);
}
free(t3);
return;
}
//----------------------------------------
//”гЄжЁп ЇаҐ¤« Ј Ґв Ї®бва®з® ўўҐб⨠⥪бв ў ¬ ббЁў гЄ § ⥫Ґ©
// бва®ЄЁ a, ў®§ўа й Ґв Є®«-ў® ўўҐ¤сле бва®Є
//ўў®¤ бва®Є ®Є зЁў Ґвбп ўў®¤®¬ Їгбв®© бва®ЄЁ Ё«Ё ўў®¤®¬ 22-е бва®Є
int read_str(char **a)
{
int j, count;
char b[81];
puts("\n‚ўҐ¤ЁвҐ, Ї®¦ «г©бв , ⥪бв");
puts("‚ў®¤ § ўҐаи Ґвбп Їгбв®© бва®Є®© Ё«Ё ўўҐ¤ҐЁҐ¬ ⥪бв Ё§ 22-е бва®Є");
for (j=0,count=0; j<22; j++)
{
do
{
puts("‚ўҐ¤ЁвҐ бва®Єг: ");
gets(b);
if (strlen(b)==0&&count==0)
printf("\n‚ўҐ¤ЁвҐ е®впЎл ®¤г бва®Єг!\n");
}
while ((strlen(b) == 0)&&(count==0));
if (strlen(b)==0)
break;
if ((a[j]=(char *) malloc((strlen(b)+1)*sizeof(char))) == NULL)
{
printf("\nЌҐ¤®бв в®з® Ї ¬пвЁ ¤«п ўў®¤ бва®ЄЁ");
exit(1);
}
strcpy(a[j], b);
count++;
}
return count;
}
//-------------------------------------
//дгЄжЁп ®бў®Ў®¦¤ҐЁп Ї ¬пвЁ, ўл¤Ґ«Ґ®© Ї®¤ ⥪бв
//Ї а ¬Ґвал: ¬ ббЁў гЄ § ⥫Ґ©, Є®«-ў® бва®Є
void free_str(char **a, int count)
{
int j;
for (j=0; j<count; j++)
free(a[j]);
}
Соседние файлы в предмете Программирование