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

Задачи По Технологиям Программирования (Шурыгин В. Н.)

.docx
Скачиваний:
12
Добавлен:
07.10.2014
Размер:
14.07 Кб
Скачать

Найти в строке слово минимальной длины и возвратить индекс его начала. (Программирование это хороший предмет)

int str(char* stroka)

{

int min=2147483647;

char* min_start;

char*begin=stroka;

while(*stroka)

{

if(*stroka!=' ')

{

char*start=stroka;

while(*stroka&&*stroka!=' ')

stroka++;

if(stroka-start<min)

{

min=stroka-start;

min_start=start;

}

}

else

stroka++;

}

return min_start-begin;

}

int main(int argc, char *argv[])

{

char* s = "Programmirovanie eto horoshiy predmet";

printf("insex slova s minimalnoy dlinoy: %d\n", str(s));

system("PAUSE");

return EXIT_SUCCESS;

}

Оставить в строке по одному пробелу между словами. (Программирование это хороший предмет) Между словами программирование и это - 2 пробела, это и хороший – 1 пробел, хороший и предмет – 3 пробела.

void str(char* stroka,char*vyh_stroka)

{

while(*stroka)

{

if(!(*stroka==' '&& *(stroka+1)==' '))

{

*vyh_stroka=*stroka;

vyh_stroka++;

}

stroka++;

}

*vyh_stroka='\0';

}

int main(int argc, char *argv[])

{

char* s1 = "Programmirovanie eto horoshiy predmet";

char s2[50];

str(s1,s2);

printf("Result: %s\n", s2);

system("PAUSE");

return EXIT_SUCCESS;

}

Заменить в строке все целые константы из 1 цифры соответствующим повторением следующего за ними символа (например " abc 5sacb 3z" - " abcsssssacbzzz ") .

void str(char* stroka,char*vyh_stroka)

{

char*begin=stroka;

while(*stroka)

{

if((begin==stroka||!(*(stroka-1)>='0'&&*(stroka-1)<='9'))&&*stroka>='0'&&*stroka<='9'&&!(*(stroka+1)>='0'&&*(stroka+1)<='9'))

{

for(int i=0;i<*stroka-'0';i++)

{

*vyh_stroka=*(stroka+1);

vyh_stroka++;

}

stroka++;

}

else

{

*vyh_stroka=*stroka;

vyh_stroka++;

}

if(*stroka)

stroka++;

}

*vyh_stroka='\0';

}

int main(int argc, char *argv[])

{

char* s1 = "abc 5sabc 3z";

char s2[50];

str(s1,s2);

printf("Result: %s\n", s2);

system("PAUSE");

return EXIT_SUCCESS;

}

Найти в строке и удалить из нее последовательность повторяющихся символов максимальной длины (например, " abcdddddacbggggggggggggggggz" - " abcdddddacbz").

void str(char* stroka,char*vyh_stroka)

{

char*begin=stroka;

char*current=stroka;

int max=0;

char*index=NULL;//указатель на начало max последовательности

while(*stroka)

{

if(begin!=stroka&&*stroka != *(stroka-1))

{

if(stroka-current>max)

{

max=stroka-current;

index=current;

}

current=stroka;

}

stroka++;

}

while(begin!=index)

{

*vyh_stroka=*begin;

vyh_stroka++;

begin++;

}

begin+=max;

while(*begin)

{

*vyh_stroka=*begin;

vyh_stroka++;

begin++;

}

*vyh_stroka='\0';

}

int main(int argc, char *argv[])

{

char* s1 = "abcdddddacbggggggggggggggggz";

char s2[50];

str(s1,s2);

printf("Result: %s\n", s2);

system("PAUSE");

return EXIT_SUCCESS;

}