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

Курсовик8

.CPP
Скачиваний:
4
Добавлен:
01.05.2014
Размер:
9.88 Кб
Скачать
#include <conio.h>
#include <alloc.h>
#include <stdio.h>
#include <string.h>

void fon(void);
void ramka(int x1,int y1,int x2,int y2);
void menu(int y,int x1,int y1,int x2,int y2);
char** vvod(int* height);
void vivod(char** text, int* height);
void check(char** text, int* height);
void help(void);

void main(void)
{
 int posy=1;
 int height; //„«Ё­  ⥪бв 
 char** text;
 char c;
 _setcursortype(0);
 fon();
 ramka(29,8,53,14);
 menu(posy,29,8,53,14);
 do
  {
   do
     c=getch();
   while ((c!=13)&&(c!=72)&&(c!=80));
   switch(c)
      {
	case 72: posy=(posy)>1 ? posy-1: 5;
		 menu(posy,29,8,53,14);
		 break;
	case 80: posy=(posy)<5 ? posy+1:1;
		 menu(posy,29,8,53,14);
		 break;
	case 13: switch (posy)
		   {
		    case 1: help();
			    break;
		    case 2: text=vvod(&height);
			    break;
		    case 3: vivod(text, &height);
			    break;
		    case 4: check(text, &height);
			    break;
		   }
		 _setcursortype(0);
		 fon();
		 ramka(29,8,53,14);
		 menu(posy,29,8,53,14);
		 break;
      }
  }
 while ((c!=13)||(posy!=5));
}

void fon(void)
{
 int i,j;
 textcolor(1);
 textbackground(0);
 clrscr();
 window(1,1,80,25);
 for (i=2;i<80;i++)
    for (j=1;j<26;j++)
       {
	gotoxy(i,j);
	putch(176);
       }
}

void ramka(int x1,int y1,int x2,int y2)
{
 int i;
 textcolor(0);
 textbackground(6);
 gotoxy(x1,y1); putch(201);
 for (i=x1;i<x2-2;i++)
    putch(205);
 putch(187);
 gotoxy(x1,y2);
 putch(200);
 for (i=x1;i<x2-2;i++)
    putch(205);
 putch(188);
 gotoxy(x1,y1);
 for (i=y1+1;i<y2;i++)
    {
     gotoxy(x1,i); putch(186);
     gotoxy(x2-1,i); putch(186);
    }
}


void menu(int y,int x1,int y1,int x2,int y2)
{
 char sm[5][23]={
     {"  Ћ Їа®Ја ¬¬Ґ         "},
     {"  ‚ў®¤ ⥪бв          "},
     {"  Љ®­ва®«м­л© ўлў®¤   "},
     {"  Џ®Є § вм १г«мв в  "},
     {"  ‚л室               "}};
 int i=1;
 textcolor(0);
 window(x1+1,y1+1,x2-1,y2-1);
 do
  {
   if (y==i)
     textbackground(2);
   else
     textbackground(6);
     gotoxy(1,i);
     cprintf("%s",sm[i-1]);
     i++;
  }
 while (i<=5) ;
}

char** vvod(int* height)
 {
  unsigned char word;
  char stroka[81]={""};
  char** string;
  int i=0, j=0, k;
  textcolor(7);
  textbackground(0);
  window(1,1,80,25);
  clrscr();
  _setcursortype(1);
  printf("******************       ‚ўҐ¤ЁвҐ ⥪бв ­  агббЄ®¬ п§лЄҐ:");
  printf("       *****************\n");
  gotoxy(1,23);
  string=(char**)malloc(20*sizeof(char*));
  for (k=0;k<80;k++)
     printf("*");
  gotoxy(1,3);
  do
    {
     word=getch();
     //…б«Ё ­ ¦ в п Є« ўЁи  - ЎгЄў  агббЄ®Ј®  «д ўЁв , Ё«Ё §­ Є
     //ЇаЁЇЁ­ ­Ёп, в® ®Ўа Ў влў Ґ¬ Ёе.
     if (((word>='Ђ')&&(word<='Ї')||(word>='а')&&(word<='с')||
     (word>=',')&&(word<='.')||(word==' ')||(word=='!')||
     (word==':')||(word==';')||(word=='?'))&&(i<19))
       {
	//ЏаЁбў Ёў Ґ¬ н«Ґ¬Ґв­г ¬ ббЁў  Є®¤ ­ ¦ в®Ј® бЁ¬ў®« 
//	string[i][j]=word;
	stroka[j]=word;
	printf("%c", word);
	//…б«Ё ¬л ¤®бвЁЈ«Ё Є®­ж  бва®ЄЁ
	if (j>77)
	  {
	   string[i]=(char*)malloc(j*sizeof(char*));
	   strcpy(string[i], stroka);
	   for (k=0;k<80;k++) stroka[k]='\0';
	   printf("\n");
	   j=0; i++;
	  }
	else j++;
	}
     //…б«Ё ­ ¦ в п Є« ўЁи  - ENTER, в® ЇҐаҐе®¤Ё¬ ­  б«Ґ¤гойго бва®Єг
     if ((word==13)&&(i<19))
       {
	string[i]=(char*)malloc(j*sizeof(char*));
	strcpy(string[i], stroka);
	for (k=0;k<80;k++) stroka[k]='\0';
	printf("\n");
	i++; j=0;
       }
     //…б«Ё ­ ¦ в п Є« ўЁи  - BACKSPACE, в® г¤ «пҐ¬
     //ЇаҐ¤иҐбвўгойЁ© бЁ¬ў®«
     if (word==8)
       {
	//‚Ё§г «м­® бвЁа Ґ¬ бЁ¬ў®« ЇҐаҐ¤ Єгаб®а®¬
	printf("\b \b");
	if (j>0)
	  {
	   stroka[j-1]='\0';
	   j--;
	  }
	else
	//…б«Ё ¬л ­ е®¤Ё¬бп ў ­ з «Ґ бва®ЄЁ...
	  {
	   //ЏҐаҐ¬Ґй Ґ¬бп ў Є®­Ґж ўлиҐбв®п饩 бва®ЄЁ...
	   if (i>0)
	     {
	      i--;
	      strcpy(stroka,string[i]);
	     }
	   j=strlen(stroka+1);
	   stroka[j]='\0';
	   //... Ё бвЁа Ґ¬ ҐҐ Ї®б«Ґ¤­Ё© бЁ¬ў®«
	   gotoxy(j+1,i+3);
	   printf(" ");
	   gotoxy(j+1,i+3);
	  }
	//‡ ¬Ґ­пҐ¬ бвҐавл© ўЁ§г «м­® бЁ¬ў®« Є®­ж®¬ бва®ЄЁ ў
	//Ї ¬пвЁ (Ё­ зҐ бд®а¬г«Ёа®ў вм нв® ­Ґ ¬®Јг!!!)
       }
     //…б«Ё зЁб«® бва®Є ЇаҐўлбЁв ¤®ЇгбвЁ¬®Ґ, Є®¬ЇмовҐа ўл¤ бв
     //§ўгЄ®ў®Ґ ЇаҐ¤гЇаҐ¦¤Ґ­ЁҐ Ё ⥪бв®ў®Ґ ЇаҐ¤гЇаҐ¦¤Ґ­ЁҐ
     if (i>18)
       {
	gotoxy(1,24);
	printf("          ђ §¬Ґал ®Є­  ­Ґ Ї®§ў®«пов ўўҐбвЁ Ў®«м襥 Є®«ЁзҐбвў® бва®Є!\a");
	gotoxy(1,22);
       }
    }
  //„Ґ« Ґ¬ бЁЁ ®ЇҐа жЁЁ, Ї®ЄҐ ­Ґ ­ ¦ в  ESC Ё«Ё Ї®Є  ­Ґ
  //ЇаҐўл襭 «Ё¬Ёв бва®Є
  while (word!=27);
  string[i]=(char*)malloc(j*sizeof(char*));
  strcpy(string[i], stroka);
  //ЏаЁбў Ёў Ґ¬ ЇҐаҐ¬Ґ­­®© зЁб«® бва®Є ўўҐ¤Ґ­­®Ј® ⥪бв 
  *height=i;
  return string;
 }

void vivod(char** text,int* height)
 {
  int i,j=0, ThereIsNoWord=0;
  textcolor(7);
  textbackground(0);
  window(1,1,80,25);
  clrscr();
  printf("****************       Љ®­ва®«м­л© ўлў®¤ Ёб室­®Ј® ⥪бв :");
  printf("       ***************\n");
  gotoxy(1,23);
  for (i=0;i<80;i++)
     printf("*");
  gotoxy(1,3);
  for (i=0; i<=*height; i++)
     if (text[i]==NULL)
       printf("\n");
     else
       printf("%s\n", text[i]);
  i=0; j=0;
  while (i<=*height&&ThereIsNoWord==0)
    {
     while (j<=strlen(text[i])&&ThereIsNoWord==0)
       {
	if ((text[i][j]>='Ђ')&&(text[i][j]<='Ї')||(text[i][j]>='а')
	   &&(text[i][j]<='с'))
	   ThereIsNoWord=1;
	j++;
       }
     i++;
    }
 if (ThereIsNoWord==0)
   {
    gotoxy(1,24);
    printf("                ‚® ўўҐ¤Ґ­­®¬ ў ¬Ё ⥪б⥠­Ґв ­Ё ®¤­®Ј® б«®ў !!!\a");
    gotoxy(1,22);
   }
  do;
  while (getch()!=27);
 }

void help(void)
 {
  textcolor(7);
  textbackground(0);
  window(1,1,80,25);
  clrscr();
  textcolor(14);
  cprintf(" ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН» ");
  cprintf(" є             Љгаб®ў п а Ў®в  Ї® ¤ЁбжЁЇ«Ё­Ґ \"Џа®Ја ¬¬Ёа®ў ­ЁҐ\"               є ");
  cprintf(" є                   бв㤥­в  ЈагЇЇл  д Єг«мвҐв  Љ’€                      є ");
  cprintf(" є                           є ");
  cprintf(" є                   є ");
  cprintf(" ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј ");
  textcolor(11);
  cprintf(" ЙНННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН» ");
  cprintf(" є                       ‡ ¤ ­ЁҐ ­  Єгаб®ўго а Ў®вг:                          є ");
  cprintf(" є                                                                            є ");
  cprintf(" є      ‡ ¤ ­ ⥪бв, ᮤҐа¦ йЁ©  Їа®Ё§ў®«м­®Ґ  Є®«ЁзҐбвў® бва®Є, ў Є®в®але    є ");
  cprintf(" є  ®в¤Ґ«м­лҐ б«®ў  ¬®Јгв а §¤Ґ«пвмбп ®¤­Ё¬ Ё«Ё ­ҐбЄ®«мЄ®¬Ё  Їа®ЎҐ« ¬Ё Ё«Ё    є ");
  cprintf(" є  §­ Є ¬Ё Їг­Євг жЁЁ (ЇҐаҐ­®б б«®ў б ®¤­®© бва®ЄЁ ­  ¤агЈго ­Ґ ЁбЇ®«м§г-    є ");
  cprintf(" є  Ґвбп) „®ЇгбвЁ¬лҐ §­ ЄЁ Їг­Євг жЁЁ: \" . , : ; - ! ? \". ЌҐ®Ўе®¤Ё¬® бд®а-    є ");
  cprintf(" є  ¬Ёа®ў вм ­®ўл© ⥪бв, Ї®«гз Ґ¬л© Ё§ Ёб室­®Ј® б«Ґ¤гойЁ¬ ®Ўа §®¬: ўлЎЁ-    є ");
  cprintf(" є  а овбп  бва®ЄЁ  б® б«®ў ¬Ё  зҐв­®©  ¤«Ё­л, Ґб«Ё  е®вп  Ўл ®¤­® б«®ў® ў    є ");
  cprintf(" є  бва®ЄҐ ᮤҐа¦Ёв  ¤ўҐ ®¤Ё­ Є®ўлҐ  а冷¬ бв®пйЁҐ ЎгЄўл Ё Ї®б«Ґ¤­ҐҐ б«®ў®    є ");
  cprintf(" є  нв®© бва®ЄЁ пў«пҐвбп ЇаЁ« Ј вҐ«м­л¬. ЏаЁ« Ј вҐ«м­л¬ ў Їа®Ја ¬¬Ґ бзЁв -    є ");
  cprintf(" є  овбп б«®ў , Ё¬ҐойЁҐ ®Є®­з ­Ёп: \"л©\",\"л¬\",\"лҐ\",\"Ё©\",\"Ё¬\",\"ЁҐ\",\"®©\",\"®¬\"    є ");
  cprintf(" є  \"®Ґ\",\"Ґ©\",\" п\",\"пп\",\"го\",\"оо\".                                            є ");
  cprintf(" є      ЏаЁ  ўў®¤Ґ Ёб室­®Ј® ⥪бв   ў ®Є­Ґ । Єв®а   ЁбЇ®«м§гҐвбп в®«мЄ®    є ");
  cprintf(" є  агббЄ п а бЄ« ¤Є  Є« ўЁ вгал   в Є¦Ґ §­ ЄЁ ЇаҐЇЁ­ ­Ёп.  Ћбв «м­лҐ бЁ¬-    є ");
  cprintf(" є  ў®«л ЁЈ­®аЁаговбп. Љ« ўЁи  ESC Ї®§ў®«пҐв § Є®­зЁвм ўў®¤ ⥪бв .           є ");
  cprintf(" є                                                                            є ");
  cprintf(" є                 „«п ўл室  ў ¬Ґ­о ­ ¦¬ЁвҐ Є« ўЁиг ESC...                   є ");
  cprintf(" ИННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННј");
  do;
  while (getch()!=27);
 }

void check(char** text,int* height)
 {
  int i,k,j=0,EndofWord,BeginofWord,DivbyTwo,DoubleLetter;
  int IsLine=0;
  char ok[15][3]={"л©","л¬","лҐ","Ё©","Ё¬","ЁҐ","®©","®¬","®Ґ",
		  "Ґ©"," п","пп","го","оо"};
  textcolor(7);
  textbackground(0);
  window(1,1,80,25);
  clrscr();
  printf("***************        ‚лў®¤ १г«мв в®ў ®Ўа Ў®вЄЁ ⥪бв :");
  printf("       ***************\n");
  gotoxy(1,23);
  for (i=0;i<80;i++)
     printf("*");
  gotoxy(1,3);
  //ЋЇаҐ¤Ґ«пҐ¬ Є®­Ґж Ї®б«Ґ¤­ҐЈ® б«®ў  i-в®© бва®ЄЁ
  for (i=0;i<=*height;i++)
     {
      j=strlen(text[i]);
      DivbyTwo=1; DoubleLetter=0;
      //€йҐ¬ Ї®б«Ґ¤­Ё© бЁ¬ў®« (ЎгЄўҐ­­л©) Ї®б«Ґ¤­ҐЈ® б«®ў ...
      while ((text[i][j]<'Ђ'||text[i][j]>'с'||
      (text[i][j]>'Ї'&&text[i][j]<'а'))&&j>=0)
	j--;
      EndofWord=j;
      for (k=0;k<15;k++)
	 if (text[i][j-1]==ok[k][0]&&text[i][j]==ok[k][1])
	 //Џ®б«Ґ¤­ҐҐ б«®ў® ў бва®ЄҐ - ЇаЁ« Ј вҐ«м­®Ґ
	   {
	    while (j>=0&&DivbyTwo==1)
	      {
	       while (((text[i][j]>='Ђ'&&text[i][j]<='Ї')||
	       (text[i][j]>='а'&&text[i][j]<='с'))&&j>=0)
		  {
		   if (text[i][j-1]==text[i][j])
		     DoubleLetter=1;
		   j--;
		  }
	       BeginofWord=j;
	       if ((EndofWord-BeginofWord)%2)
		 DivbyTwo=0;
	       while ((text[i][j]<'Ђ'||text[i][j]>'с'||
	       (text[i][j]>'Ї'&&text[i][j]<'а'))&&j>=0)
		  j--;
	       EndofWord=j;
	      }
	    if (DivbyTwo&&DoubleLetter)
	      {
	       printf("%s\n", text[i]);
	       IsLine=1;
	      }
	   }
     }
  if (!IsLine)
    {
     gotoxy(1,24);
     printf("     ‚ ⥪б⥠­Ґв ­Ё ®¤­®© бва®ЄЁ, 㤮ў«Ґвў®апо饩 ўбҐ¬ гб«®ўЁп¬ ўлЎ®аЄЁ!!!\a");
     gotoxy(1,22);
    }
  do;
  while (getch()!=27);
 }