Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Курсовик4

.CPP
Скачиваний:
2
Добавлен:
01.05.2014
Размер:
7.1 Кб
Скачать
#include <graphics.h> #include <stdio.h> #include<conio.h>
#	include <string.h>
#	include <alloc.h>
//#Define PATHTODRIVER "C:\\borlandc\\bgi\\"
char** inputtext(int*,int*,mt*);
void  text 0;
void flag (int);
void data (char*, char*,int*);
void inputword (char*);
void clear (void);
void menu (int*,int*);
char** account (char**,char*,char*,int*,int*);
void probel(char*);
void inform(void);
const char MAXSTR=20, MAXWRD=15;
void main (void)
{ int gdriver=DETECT,n=l,i,j,kol=0,*x,f=l,n=l,flagl=0,nag2=0;
char **text,*wordl,*word2,**result;
int gmode;
initgraph (&gdriver, &gmode, PATHTODRIVER);
x=(int*)malloc(MAXSTR*sizeof(int));
wordI=(char*)malloc(MAXWRD*sizeof(char));
word2=(char*)malloc(M AXWRD*sizeof(char));
for (i=0;i<MAXSTR;i++)
*(x+i)=0; do
{
do{
menu(&n,&f);
}while(f); switch (n)
{
case I: text=inputtext(&kol,x,&flagl);flagl=l;break; case 2: data(wordl,word2,&flag2);flag2=l;break; case 3: result=account(text,wordl,word2,&kol,x); for (i=0;i<kol;i++) puts(*(result+i)); break;
case 4: inform();break; case 5: fl=0; break;
}
}while(fl); closegraphQ; for (i=0;i<kol;i++)
{
free(*(text+i)):
free(*(result+i));
}
free (text); free (result); free(wordl); free(word2); x=NULL;
}
char** inpultct(int' koll,int* x,int* flag)
{
char buf|81],**p,**text,temp,key;
intkol=0,i,j,f=l,fl,flagl;
clear();
flagl=*flag;
if(flag1)
{
puts("Если вы хотите ввести новый текст нажмите Enter"); puts("Иначе нажмите любую клавишу ");
if ((key=getch  ())==! 3) flagl=0;
}
if(!flag1)
p=(char**)malloc(MAXSTR*sizeof(char*)); puts("\n");
puts("Введите необходимый текст (Не более 20 строк):"); puts("Для окончания ввода наберите end."); printf("\n"); for(i=0;i<MAXSTR&& f;i)
{
  j= -1
fl=l; do


char key;
flagl=*flag;
if(flagl)
{
clearQ;
puts("Eom вы хотите ввести новые слова, нажмите Enter"); puts("Иначе - любую клавишу (не Enter)"); if((key=getch())=13) flagl=0; else
printf("l слово: ");puts(wordt); printf("\n2 слово: ");puts(word2); getch();clear();
}
}
if(!flagl)
{
clearQ;
puts("Введите слово, которое необходимо заменить (не более 14 символов)");
puts(ffnocne завершения ввода нажмите Enter");
puts("3аменяемоем);
inputword(wordl);
do
{
if(f=l)
ри15("\пДля корректной работы программы введите 2 слово меньшее либо равной 1 слову"); f=0;
ри15("\пВвелите слово, которым необходимо заменить (не более 14 символов)"); puts(" После завершения ввода нажмите Enter");
printf("2");
inputword(word2);
if (strlen(word2)>strlen(word 1))
f=1;
clearQ; } while(f);
}
}
}
//
void  inputword (char* t) 
{
int i,f,a;
char temp; do
{
a=0;
f=l;
printf(" Слово:");
for (i=0;i<(MAXWRD-l) && f;)
{
temp=getch();
if (temp>='A' && temp<='Z' || temp>='a' && temp<='z' || temp>='A' && temp<='n' || temp>='p' && temp<='fl' || temp=8)
{
printf("%c",temp);
*(t+i)=temp;
I++;
}

if(temp=13) f=0;
} 
switch(i)
{
case 0:puts("Oujn6Ka!\n");a=l;l>reak;
ease (MAX\VRD-l):puts("\n!!!Bame слово урезано до 14 символов!!!");
getch();break; default:*(t+i)='\0';a=0;
	      }
}while (a);
\\ ---------------------------------------------------------

char** account (char** text, char* wordl, char* word2,int* kol,int* x)
{
int i,nl,n2,m,f,s=0,j,k,t;




char **result;
if(*kol&&*x)
{
result=(char**)malloc(*kol*sizeof(char*));
for(i=0;i<*kol;i++)
*(result+i)=(char*)malloc(*(x-*-i)*sizeof(char));
for(i=0;i<*kol;i++)
*(*(result+i)+j)=*(*(text+i)+j); m=strlen(*text); puts("\n\n\n\n\n"); nl=strlen(wordl); n2=strlen(word2); for(i=0;i<m;i++)
{ f=i;
if (*(*result+i)=*wordl && (*(*result+M)=' ' || i=0))
for(j=l;j<nl &&f;j++)
if(*(*result+i+j)!=*(wordl+j)) f=0;
if (f && (*(*result+i+j)=- ' || *(*result+i+j)=='.' || *(*result+i+j)==Y j| *(*result+i+j)==':'\\ *(*result+i+j)='\0' || *(*result+i+j)='!') || *(*result+i+j)==’?')s++;
   }
}
t=0; 
for(i=l;i<*kol;i++)
{ for (j=0;J<*(x+0 && t<s;j++)
{
f=i;
if (*(*(result+i)+j)=(*wordl) && (*(*(result+i)+j-l)==' '|| j==0))
{
for(k=0;k<nl && f; if(*(*(result+i)+j+k)!=*(wordl+k))f=0;
if (f && (*(*(result+i)+j+k)==$ ' || *(*(result+i)+k+j)=V || *(*(result+i)+k+j)==',' || (*(result+i)+k+j)=V || *(*(result+i)+k+j)='\0' || *(*(result+i)+k+j)='!' || *(*(result+i)+k+j)=='?'))
{
for(k=0;k<n2;k++)
*(*(result+i)+j+k)=*(word2+k); for (k=j+n2;k<j+nl;k++)
*(*(result+i)+k)=' ';


t++;
                                  }
                            }
                         }


probel(*(result+i));
}
puts("\n");
return(result);
}
else
{
clearQ;
рuts("Сначала вы должны ввести необходимый текст");
getch();
clearQ;
}
}
//	
void probel(char* p) int k,j;
for(k=0;k<strlen(p);)
if (*(p+k)='' && *(p+k+1)='')
for (j=k;j<strlen(p)-l;j++)
*(P+J)='\0';
}
else k++;
}
//   ----- -------------------- ---------------------------------------
void flag(int n)
{
const int weidth=84; int i,!eft,a=3;
setnilstyle(HATCH_FILL,8);
bar3d(50,30,590,80,3,l);
setcolor(6);
setfillstyle(INTERLEAVE_FILL,7);
for(i=0;i<5;i++)
{ left=i*weidth+(i+l)*20+50;
setnilstyle(INTERLEAVE_FILL,2); a=0;
J
bar3d(left,45,left+weidth,65,a,l); a=3;
setfiHstyle(INTERLEAVE_FILL,7); } J
ц	
void fltext (void)
{
char*text="TEXT",*dan="DATA",*result="RESULTS",*help="INFORMt1,*exit="EXIT"; setcolor(lS); outtextxy(93,52,text); outtextxy(200,52,dan); outtextxy(293,52,result); outtextxy(402,52,help); outtextxy(515,52,exit);
//	
void menu (int *nl,int *f) int n;
char temp;
n=*nl;
nag(n);
fltext();
do
if((temp=getch())!=0) switch (temp)
case 77:n++;break; case 75: n—;break; default:break;
switch (n)
case 6: n=l;break; case 0: n=5;break; default:break;
flag(n); ntextQ;
I } while (temp!=13);
*nl=n; *f=0;
void inform(void)
{ char *pi="****************** PRODUCT of ART CORPORATION ******************",
*p2="Autor: ALEXEEV ARTEM VVACHESLAVOVICH";
clear();
settextstyle(3,HORIZ_DIR,l);
outtextxy(15,30,pl);
settextstyle(DEFAULT_FONT,HORIZ_DIR,l);
outtextxy(310,80,p2);
puts(M\n\n\n\n\n\n\n\n\n\n ");
puts("      Настоящая программа осуществляет ввод необходимого небольшого текста");
puts(" Вызодит его на экран (сразу же после окончания ввода)");
puts(" Формирует новый текст и выводит его на экран в соответствии с условием:");
puts(" Заменить в тексте введенное пользователем первое слово на второе");
puts(" Столько раз. сколько оно встречается в первой строке введенного текста");
puts(" Для успешной работы программы автор накладывает некоторые ограничения:");
puts("   - число строк в тексте не должно превышать 20м);
puts("   - количество символов в заменяемых словах не более 14м);
puts("   - заменяемое слово должно быть больше либо равняться 2 слову");
puts("   - слова в тексте могут разделяться знаками препинания и только ОДНИМ");
puts("     пробелом, в противном случае двойные пробелы будут удалены ");
puts("\n\n\n\n\tnредложения и пожелания по поводу работы программы посылайте");
puts("\tHa один из адресов: artemalex@rambler.ru, artemalex@rbcmail.ru");
puts("\tC жалобами просьба не беспокоить");
getchQ; clearQ;
} void clear (void)
{
clrscrQ;
setnilstyle(SOL!D_FILL,0); bar(0,0,640,480);

Соседние файлы в предмете Программирование