Практика программирования (Бейсик, Си, Паскаль)


         

Идея поиска довольно проста. Обозначим


Совет 1 (общий)

Идея поиска довольно проста. Обозначим через h шаг по индексу в строке S1, с которым выбираются символы, сравниваемые с символами S2. Для нулевой разрядки h=l, для выборки через символ h=2 и т. д. Очевидно, что начинать

сравнение надо с символа S1[I], совпадающего с первым символом S2. Однако реализация этой идеи может быть разной. Например, из строки si можно извлечь с заданной разрядкой нужное число символов и результат сравнить с S2. Более эффективно совместить эти две операции и сравнивать извлекаемый из S1 символ с очередным символом S2, прекращая выборку при первом несовпадении. Указанный подход был реализован победителем областной студенческой олимпиады В. Мартьяновым (апрель 2000 г.), на базе программы которого и построены приведенные ниже примеры. Наиболее оригинальной, на наш взгляд, является проверка условия (h=l) или (L2>1). Здесь L2—длина второй строки.


Программа 3_13.bas

RЕМ Поиск вхождения S2 в S1 с разрядкой

CLS

INPUT "Введите S1: ", Sl$: L1=LEN(S1$)

INPUT "Введите S2: ", 32$: L2=LEN(S2$)

FOR H=l TO L1

IF (H=l) OR (L2>1) THEN
FOR I=1 TO Ll-(L2-l)*H

IF MID$(S1$,I,1)=MID$(S2$,l,l) THEN
FOR J=2 TO L2,

IF MID$(S1$,I+(J-1)*H,1)<>MID$(32$,J,1) THEN GOTO ml
NEXT J

PRINT "Шаг: ";Н-1,"Позиции: ";I;

FOR К = 1 TO L2 - 1: PRINT "-"; I + К * H; : NEXT K: PRINT
К = 1 ml:
END IF

NEXT I
END IF
NEXT H

IF К = 0 THEN PRINT "Строка S2 не входит в S1"
END

Программа 3_13.с

/* Поиск вхождения S2 в S1 с разрядкой */

#include <stdio.h>

#include <conio.h>

#include <string.h> main{)

{

char s1 [80],s2[80];
int i,j,k=0,h,Ll,L2;
clrscr();

printf("Введите S1: ");
scanf("%s",s1);
Ll=strlen(s1);
printf("Введите S2: ");
scanf("%s",s2);
L2=strlen(s2);
for(h=l; h<=Ll; h++)
{
if(h==l || L2>1
}

{
for(i=0; i<Ll-(L2-l)*h; i++)
{
if (sl[i]=s2[0])

{
for(j=l; j<L2; j++)

Содержание  Назад  Вперед





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий