diff --git a/proglabs/lab10/compile.sh b/proglabs/lab10/compile.sh old mode 100644 new mode 100755 index e69de29..8e6f1f4 --- a/proglabs/lab10/compile.sh +++ b/proglabs/lab10/compile.sh @@ -0,0 +1 @@ +gcc -std=c99 -Wall main.c func.c -o prog diff --git a/proglabs/lab10/func.c b/proglabs/lab10/func.c index fc616be..8a1d521 100644 --- a/proglabs/lab10/func.c +++ b/proglabs/lab10/func.c @@ -2,30 +2,34 @@ int buffinput(int *x, int *inbuff, int *buff){ setlocale(LC_ALL, ""); - + //INPUT------------------------------------------------- wint_t ch; *inbuff = 0; - while((ch=getwchar())!='\n'&&*inbuff='я') || ('А'<=&&>='Я') ){x[0]++;c++;continue;} else if('0'>=buff[c]&&buff[c]<='9'){x[1]++;continue;} + else if(buff[c]=='\t'){x[3]++} + else if(buff[c]==i){x[i-28]++;c++;continue;}; - else if(buff[c]==i){x[i-30];c++;continue;}; - - else {x[23]++;c++;} + else {x[25]++;c++;} } //________________________________________________________ @@ -34,44 +38,81 @@ int buffinput(int *x, int *inbuff, int *buff){ } -void func1 (int *x, int *buff){ - switch(FUNC1){ +void func1 (char *f, int *x,int inbuff, int *buff){ + printf("\nFunc output:"); + switch(f[3]){ case 1://Определяет среднюю длину слова в тексте { + if(x[28]){ + x[30]/=x[29]; + printf("\n\tСредняя длинна слова - %d",x[30]); + } + else{ + x[30]+=inbuff; + x{29}++; + } break; } + case 2://Подсчитывает количество слов, длина которых не превышает 5 символов. { + if(x[28]){ + printf("\n\tВсего слов <5 букв - %d",x[30]); + } + else if(inbuff<5)x[30]++; break; } + case 3://Определяет количество букв после первого и до последнего слова. { + if(x[29]); + else {x[30]-=x[0];x[29]=1;} + if(x[28]){x[30]+=x[0];printf{"\n\tКолл-во букв после 1 и до последнего слова - %d",x[30]}} break; } case 4://Удаляет первую букву каждого слова и выводит результат. { + for(int i = 1;iтевирП { break; @@ -158,17 +199,30 @@ void func3 (int *x, int *buff){ { break; } - case 8: + case 8: //Делит слово на два и оставляет большую часть. Пример: жук -> к, солнце -> сол { break; } - case 9: + case 9: //Делит слово на два и оставляет меньшую часть. Пример: жук -> жу, солнце -> нце { break; } - case 10: + case 10://Превращает русский текст в транслит русского текста. Пример кот ->kot, жук -> zhuk { break; } } } + +void count(int *x){ + int sum = 0; + printf("\nStatistic"); + printf("\n\t \"Symb\" - [ammount]\n"); + printf("\n\t \"\\n\" - [%d]"); + printf("\n\t \"\\t\" - [%d]"); + printf("\n\t \" \" - [%d]"); + for(int i=33;i<=64;i++) + if(x[i-28]>10){printf("\n\t\"%ls\" - [%d]"),i,x[i];} + else sum+=x[i-30]; + printf("\n\t other - [%d]",sum); +} diff --git a/proglabs/lab10/head.h b/proglabs/lab10/head.h index a888901..95a37e4 100644 --- a/proglabs/lab10/head.h +++ b/proglabs/lab10/head.h @@ -4,23 +4,26 @@ #include #include + // GET int buffinput(int *x, int *inbuf, int *buff); // FUNC -void func1(); +void func1(int f, int *x, int inbuff, int *buff); -void func2(); +void func2(int f, int *x, int inbuff, int *buff); -void func3(); +void func3(int f, int *x, int inbuff, int *buff); + +void count(int *x); // DEFINE #define clear; printf("\n \033[H\033[J \n"); #define BUFFMAX 20 -#define XMAX 23 +#define XMAX 31 #define FUNC1 3 #define FUNC2 8 diff --git a/proglabs/lab10/main.c b/proglabs/lab10/main.c index b493782..2cad787 100644 --- a/proglabs/lab10/main.c +++ b/proglabs/lab10/main.c @@ -3,7 +3,41 @@ int main(int argc, char *argv[]){ int buff[BUFFMAX]; int x[XMAX]; + for (int i = 0;i