MaxoHbkiu
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Задание Первое: Просто до невозможности (в том случае если последовательность полностью должна совпадать): #include <stdio.h> void main(void) { char str[255],pat[255],start,end; printf("Enter string: ");scanf("%s",str); printf("Enter pattern: ");scanf("%s",pat); start=strstr(str,pat)-(long)&str;end=start+strlen(pat); printf("Start=%d, end=%d",start,end); } Результат работы (первый символ имеет индекс 0, конец это следующий за последовательностью символ): Enter string: asdyhasdklgfyhakuhf Enter pattern: has Start=4, end=7 Задание Первое: Немного дольше но тоже очень просто (в том случае если последовательность может не полностью совпадать или их несколько): #include <stdio.h> int searchstr(char* str,char* pat,int* plen) { int i,len; for (i=0;i<strlen(str);i++) if (str[i]==pat[0]) { len=0; while (str[i+len]==pat[len]&&pat[len]!=0) len++; *plen=len; break; } else if (str[i]==0) break; return i; } void main(void) { char str[255],pat[255];int start,len,i; printf("Enter string: ");scanf("%s",str); printf("Enter pattern: ");scanf("%s",pat); for (i=0;i<strlen(str);) { start=searchstr(&str[i],pat,&len); if (start+i<strlen(str)) printf("Start=%d, end=%d\n",start+i,start+i+len); i+=start+1; } } Добавлено Задание Второе: Тут уже и делать нечего - я вообще не понимаю кому нужна такая елементарщина. Неужели лабораторки такие??? #include <stdio.h> void main(void) { int str[255];int start=0,max=1,cstart=0,count=1,slen,i; printf("Enter elements count: ");scanf("%d",&slen); for (i=0;i<slen;i++) { printf("Enter %d element: ",i); scanf("%d",&str[i]); } for (i=1;i<slen;i++) if (str[i]>str[i-1]) count++; else if (count>max) {max=count;start=cstart;count=1;cstart=i;} for (i=start;i<start+max;i++) printf("%d\t",str[i]); } | Всего записей: 31 | Зарегистр. 03-04-2004 | Отправлено: 04:21 23-04-2004 | Исправлено: MaxoHbkiu, 04:29 23-04-2004 |
|