This commit is contained in:
2025-11-24 02:34:25 +07:00
parent 12e5a28710
commit a58080a1a6
4 changed files with 111 additions and 19 deletions
+69 -15
View File
@@ -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<BUFFMAX){
while((ch=getwchar())!='\n'&&ch!=' '&&*inbuff<BUFFMAX){
*(buff+*inbuff)=(int)ch;
(*inbuff)++;
}
//______________________________________________________
if(ch=='\n')x[2]++;
else if(ch=='\t')x[3]++;
else if(ch==' ')x[4]++;
//COUNT -------------------------------------------------
int c=0;
for(int i = 32;i<=64;i++){
// [0]-symb [1]-num [2]-\n [3]-\t [4]-' ' [5].. 33-64
for(int i = 33;i<=64;i++){
if(
('а'<=&&>='я') ||
('А'<=&&>='Я')
){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<inbuff;i++){
putwchar(buff[i]);
}
if(x[2]!=x[30])putwhcar{'\n'};
if(x[3]!=x[29])putwhcar{'\t'};
if(x[4]!=x[27])putwhcar{' '};
x[30]=x[2];
x[29]=x[3];
x[27]=x[4];
break;
}
case 5://определяет, сколько в заданном тексте слов, начинающихся с буквы,заданной пользователем.
{
if[x[28]]
printf("\n\t - %d",x[30]);
else
if(buff[0]==f[4])x[30]++;
break;
}
case 6://находит сумму всех цифр в введенном предложении. (если в тексте нетцифр, добавить) предусмотреть обработку шаблонов (12word, wo12rd,word12)
{
break;
}
case 7:// вставляет восклицательный знак в конце каждой строки текста.
{
break;
}
case 8://проверяет заканчивается ли каждая строка точкой и добавляет ее при необходимости, считает сколько точек было добавлено
{
break;
}
case 9://определяет сколько раз в введенной строке встречается слово,заданное пользователем.
{
break;
}
case 10://подсчитывает количество букв в каждом втором слове.
{
break;
@@ -80,8 +121,8 @@ void func1 (int *x, int *buff){
}
void func2 (int *x, int *buff){
switch(FUNC2){
void func2 (int *f, int *x,int inbuff, int *buff){
switch(f[3]){
case 1: //Подсчитывает, сколько слов начинается с последней буквы первого слова.
{
break;
@@ -126,8 +167,8 @@ void func2 (int *x, int *buff){
}
void func3 (int *x, int *buff){
switch(FUNC1){
void func3 (int *f, int *x,int inbuff, int *buff){
switch(f[3]){
case 1: //Реверсирует слово. Пример: Привет ->тевирП
{
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);
}