Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Korama01
0 / 0 / 0
Регистрация: 27.09.2018
Сообщений: 19
1

Найти начало элемента одной цепочки символов и сравнить ее с другой

05.11.2018, 19:39. Просмотров 174. Ответов 4
Метки нет (Все метки)

Здравствуйте, есть такой код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h> 
 
int search(const char input[], const char pattern[])
{
    int i = 0;
    int j = 0;
    while(input[i] != '\0'){
    
    if (input[i] == pattern[j]) {
        while(pattern[j] != '\0') {
            if (input[i+j] != pattern[j]){
            j = 0;
            break;
        }
            j++;
    }
        return i;
    }
}
return -1;
}
Эта функция аналог из библиотеки стринг. Она должна найти начало элемента одной цепочки символов и сравнить ее с другой, выдав индекс, на котором располагается первый знак. В случае, если они полностью разные - вернуть минус один. Пример:
search("abcde", "bcd") -> 1 search("abcde", "" )-> 0
search("abcde", "bba" )-> -1 search("abcde", "de )-> 3
Она не работает и хотел бы спросить, может, кто найдет почему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2018, 19:39
Ответы с готовыми решениями:

Сравнить набор данных из одной таблички с другой в запросе
Сравнить набор данных из одной таблички с другой. Таблица 1 Номер 1 2 3 4 5 66 7

Как сравнить ячейки, в одной из которых - реальное значение, а в другой - получаемое по формуле?
Как сравнить ячейки, в одной из которых - реальное значение, а в другой - получаемое по формуле? ...

В строке символов найти длину самой длинной цепочки
Дана строка символов и некоторый символ а. Вывести позицию и длину самой длинной непрерывной...

Сравнить строку из одной таблицы со строками другой, удалить ее из обеих таблиц при обнаружении совпадения
Здравствуйте, выгружаю отчёт, макросом разделяю его на 2 листа( 2-е таблицы). нужно проверить...

Вычитание из одной строки символов другой
Например есть две строки типа char, нужно из одной строки вычесть символы другой. char s1 = 'Hello...

4
FFPowerMan
145 / 87 / 35
Регистрация: 11.10.2018
Сообщений: 578
05.11.2018, 19:56 2
Ну я думаю ответ кроется в первом же ife - Строка 9. Если первые(нулевые) символы в этих строках(input и pattern), то дальнейшего увеличения i и j просто не происходит, т.е. дальнейшего хода программы нет. Тут даже зацикливание будет на мой взгляд в этом случае.
1
Korama01
0 / 0 / 0
Регистрация: 27.09.2018
Сообщений: 19
05.11.2018, 20:02  [ТС] 3
Вы хотите сказать, что условие i=0, j = 0 надо удалить? Или это не в этом причина?
0
FFPowerMan
145 / 87 / 35
Регистрация: 11.10.2018
Сообщений: 578
05.11.2018, 20:57 4
Я думаю, что их как раз и не надо удалять. Надо просто подумать и написать новую функцию. Алгоритм типа такой: ы ищем первую букву паттерна в строке input. Устанавливаем j = 0 - номер символа в patterne, а i устанавливаем = 0 тоже, но его будем прибавлять на 1 и сравнивать эти 2 символа, как у Вас в программе в Строке 9. Дальше будем прибавлять и j тоже -
также на 1. Если они сходятся до конца, то выдаем номер символа в массиве input - его надо запомнить заранее.
Если не до конца, то продолжаем поиск в цикле - по всем элементам массива input.
Алгоритм примерно такой - надеюсь Вы его реализуете.
1
Korama01
0 / 0 / 0
Регистрация: 27.09.2018
Сообщений: 19
05.11.2018, 23:59  [ТС] 5
я б реализовал, но по заданию, к сожалению, должна быть только одна функция
0
05.11.2018, 23:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2018, 23:59

STL: найти все максимальные цепочки подряд идущих положительных чисел с указанием длины каждой цепочки
Создать массив длины N (число N вводится с клавиатуры). Заполнить массив рандомно. Найти все...

Сравнить две цепочки на равенство
Пишу на чистом асме (так сказать в машинных кодах) используя отладчик. Надо сравнить две цепочки...

Привязка элемента одной таблицы элементу другой
Народ, помогите, пожалуйста, в решении следующей проблемы. Есть DataTable originTable - исходная...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru