229 lines
8.2 KiB
C
229 lines
8.2 KiB
C
#include "head.h"
|
||
|
||
int buffinput(int *x, int *inbuff, int *buff){
|
||
setlocale(LC_ALL, "");
|
||
|
||
//INPUT-------------------------------------------------
|
||
wint_t ch;
|
||
*inbuff = 0;
|
||
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;
|
||
// [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 {x[25]++;c++;}
|
||
}
|
||
//________________________________________________________
|
||
|
||
|
||
return 0;
|
||
}
|
||
|
||
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void func2 (int *f, int *x,int inbuff, int *buff){
|
||
switch(f[3]){
|
||
case 1: //Подсчитывает, сколько слов начинается с последней буквы первого слова.
|
||
{
|
||
break;
|
||
}
|
||
case 2: //Подсчитывает, сколько слов имеют указанную пользователем длину.
|
||
{
|
||
break;
|
||
}
|
||
case 3: //Печатает самое длинное слово в тексте.
|
||
{
|
||
break;
|
||
}
|
||
case 4: //Подсчитывает количество знаков препинания (не букв и не цифр).
|
||
{
|
||
break;
|
||
}
|
||
case 5: //Сортирует текст в порядке возрастания
|
||
{
|
||
break;
|
||
}
|
||
case 6: // Находит слова с тире во введенном тексте.
|
||
{
|
||
break;
|
||
}
|
||
case 7: //Вычисляет количество слов между первой и последней запятой во введенном тексте
|
||
{
|
||
break;
|
||
}
|
||
case 8: //Находит два соседних слова, начинающихся с большой буквы
|
||
{
|
||
break;
|
||
}
|
||
case 9: //Сортирует строку в тексте по убыванию
|
||
{
|
||
break;
|
||
}
|
||
case 10://Заменяет в каждом слове повторяющиеся буквы на '–'
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void func3 (int *f, int *x,int inbuff, int *buff){
|
||
switch(f[3]){
|
||
case 1: //Реверсирует слово. Пример: Привет ->тевирП
|
||
{
|
||
break;
|
||
}
|
||
case 2: //Делит слово на два и меняет начало с концом. Пример: жук -> кжу,солнце -> нцесол
|
||
{
|
||
break;
|
||
}
|
||
case 3: //После каждой гласной буквы вставляется буква 'c' и гласная повторяется. Пример: кот ->косот.
|
||
{
|
||
break;
|
||
}
|
||
case 4: //Каждая буква в слове заменяется на ее позицию в алфавите. Пример: кот ->121620, обработать только буквы.
|
||
{
|
||
break;
|
||
}
|
||
case 5: //Заменяет буквы верхнего регистра на буквы нижнего и наоборот. Пример: Привет -> пРИВЕТ.
|
||
{
|
||
break;
|
||
}
|
||
case 6: //Заменяет буквы на их двоичное представление из таблицы ASCII.Пример: кот ->101010101010111011100010
|
||
{
|
||
break;
|
||
}
|
||
case 7: /*Заменяет букву на заданное смещение в пределах алфавита (шифр
|
||
Цезаря), смещение задаётся параметром и может быть положительным или
|
||
отрицательным. Пример: кот 3 -> нсх, кот -3 -> злп*/
|
||
{
|
||
break;
|
||
}
|
||
case 8: //Делит слово на два и оставляет большую часть. Пример: жук -> к, солнце -> сол
|
||
{
|
||
break;
|
||
}
|
||
case 9: //Делит слово на два и оставляет меньшую часть. Пример: жук -> жу, солнце -> нце
|
||
{
|
||
break;
|
||
}
|
||
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);
|
||
}
|