Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программа на C под DOS.

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

deaz

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задание первое(!!!!!!!!!!!!!!!):
Написать программу поиска заданной пользователем последовательности элементов символьного массива, предварительно выводимого но экран.
Вывести координаты начала и конца этой последовательности относительно начала строки.
 
Второе задание(необязательное...):
Написать программу поиска самой длинной возрастающей последовательности элементов целочисленного массива.
Вывести данную последовательность на экран.
 
Первую программы желательно реализовать поскорее....
 
Зарание благодарен.

Всего записей: 3 | Зарегистр. 22-04-2004 | Отправлено: 19:00 22-04-2004
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
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программа на C под DOS.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru