Форум программистов, компьютерный форум CyberForum.ru

Поиск подстроки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переставить байты исходного файла в обратном порядке http://www.cyberforum.ru/cpp-beginners/thread1201120.html
7. По заданному двоичному файлу с произвольным содержанием создать новый двоичный файл, у которого байты переставлены в обратном порядке. Вывести содержимое исходного и итогового файлов на экран.
C++ Изменение значения указателя Здравствуйте В коде приведена функция, которая при помощи указателей считывает размер массива и его элементы из файла блокнота. Почему значение, хранящееся в массиве после выполнения цикла самопроизвольно меняется? функция мэйн #include <iostream> #include <stdlib.h> #include <windows.h> http://www.cyberforum.ru/cpp-beginners/thread1201114.html
C++ Рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
C++ Написать рекурсивную функцию, выводящую на экран все целые числа в определенном интервале
рекурсивная функция, выводящая на экран все целые числа от N до K, N<K
C++ Можно ли обратиться к 3 элементу массива ? http://www.cyberforum.ru/cpp-beginners/thread1201086.html
Если у нас есть int *x, y = { 1,2,3,4,5 }, можно ли обратиться к 3 элементу массива вот так? x=y; *(x+2) Думаю, что нет, так как не взят адрес x=&y А что вобще произойдет при таком условии? x=y
C++ Перед указанным элементом массива вставить новый элемент Дан массив размера N и целое число K (1 ≤ K ≤ N). Перед элемен- том массива с порядковым номером K вставить новый элемент с нулевым значением. подробнее

Показать сообщение отдельно
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
06.06.2014, 14:49     Поиск подстроки
Привет всем. Я пишу программу для поиска подстроки. Если подстрока есть в строке, вывести YES. Иначе - NO.
Вот код(еще не дописанный)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int search(char a[], char b[]){
    int i, j, n, m;
    n = strlen(a);
    m = strlen(b);
    int *c = (int*)malloc(m*sizeof(int));
 
    c[0] = 0;
    for(i = 1, j = 0; i < m;i++)
    {
        while(j > 0 && b[j] != b[i])
            j = c[j-1];
        if(b[j] == b[i])
            j++;
        c[i] = j;
 
        for(i = 0,j = 0;i < n;i++){
            while(j > 0 && b[j] != a[i])
                j = c[j-1];
            if(b[j] == a[i]);
            j++;
            if(j == m)
            {
                free(c);
                return i-j+1;
            }
        }
        free(c);
        return -1;
    }
}
 
int main()
{
    char *a[1000000];
    char *b[1000000];
 
    scanf("%s", a);
    scanf("%s", b);
 
    search(a,b)
У меня 2 вопроса. Какие аргументы нужно ввести в вызове функции?
C++
1
search(a,b)
Если я ввожу так, подчеркивает a и b. Если пишу так
C++
1
search(char a[], char b[])
тоже подчеркивает.
И второй вопрос. Как сделать проверку на наличие подстроки в строке? Я так понимаю, что эта функция
C++
1
search(a,b)
принимает значения 1 и -1. Если 1, то YES. Если -1, то NO. Я прав?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru