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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
#1

Обработка символьной строки - C++

27.04.2010, 15:01. Просмотров 558. Ответов 9
Метки нет (Все метки)

(В Си консольная версия) Функция должна находить первое вхождение в строку заданной подстроки.При реализации функции запрещается пользоваться функциями библиотек языка C. Необходимо предусмотреть работу функции при некорректном задании ее параметров. Использовать указатели.Помогите плиз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2010, 15:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработка символьной строки (C++):

Обработка символьной строки - C++
Посчитал кол-во символов в строке. Но вот как добавить цифру? #include "stdafx.h" #include <stdio.h> #include <string.h> ...

Обработка символьной информации - C++
добрый вечер! У кожній з 10 рядкових змінних міститься назва художнього твору і прізвище автора. Вивести на екран наявні серед них твори...

Обработка символьной информации - C++
Помогите пожалуйста разобраться в задаче. (66.) Гороскоп. В древнеяпонском календаре был принят 60-летний цикл из пяти 12-летних циклов,...

Обработка символьной информации - C++
Помогите с заданием, кто сможет. Задание: В заданном тексте указать слово, в котором доля гласных максимальна.

Обработка символьной информации - C++
Обработка символьной информации. Составьте программу, которая дописывает одну строку в начало другой, не используя операции склейки или...

Обработка символьной информации - C++
В заданном тексте вычислить среднее число слов в предложении и среднюю длину предложения.

9
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
27.04.2010, 15:50 #2
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
#define MAXLEN 1024
//определяет длину нуль-терминированной строки 
int len(char * s)
{ int i=0;
    while(*s++!=0 && i++<1024);
    if(i==255) i=0;
    return i;
}
//сравнивает s и p длиной l, возвращает 1 если равны
int cmp(char *s,char *p,int l)
{int i=0;
    while(i<l){
        if(s[i] != p[i])return 0;
        i++;
    }
    return 1;
 
}
//ищет вхождение подстроки f в строке s, если нет вхождения возвращает -1
int find(char * s, char * f)
{
    int sl = len(s), fl = len(f), sz = sl-fl,pos=0;
    if(sl<fl) return -1;
    do{
       while(*s != *f && pos < sz){s++; pos++;}
       if(cmp(s, f, fl)) return pos;
       pos++;s++;
    }
    while(pos < sz);
    return -1;
}
0
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
27.04.2010, 16:15  [ТС] #3
Спс,подскажите пожалуйста,а где должен осуществляться ввод строки и где основная функция?
0
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
27.04.2010, 16:46 #4
В функции main...
Я думаю сделаете самостоятельно
0
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
27.04.2010, 17:10  [ТС] #5
Можно все-таки проверить? компилятор ошибки выдает((
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
27.04.2010, 18:01 #6
Define, а можете написать какие ошибки?
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
27.04.2010, 18:52 #7
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
46
47
48
#include <stdio.h>
 
/* возвращает указатель на первое вхождение строки b в строку a или NULL */
char *mystrstr(const char *a, const char *b){
    const char *pa, *pb;
 
    if ( !a || !b )
        return NULL;
    for ( ; *a; ++a ){
        for ( pa = a, pb = b; *pa && *pa == *pb; ++pa, ++pb )
            ;
        if ( !*pb )
            return (char*)a;
    }
    return NULL;
}
 
size_t mystrlen(const char *s){
    const char *p;
    if ( !s )
        return 0;
    for ( p = s; *p; ++p )
        ;
    return p - s;
}
 
int main(void){
    char s1[BUFSIZ], s2[BUFSIZ], *p;
 
    while ( 1 ){
        printf("String 1: ");
        if ( !fgets(s1, BUFSIZ, stdin) )
            return 1;
        s1[mystrlen(s1) - 1] = '\0';
        if ( !*s1 )
            break;
        printf("String 2: ");
        if ( !fgets(s2, BUFSIZ, stdin) )
            return 1;
        s2[mystrlen(s2) - 1] = '\0';
        if ( !*s2 )
            break;
 
        printf("String 1 %scontain string 2.\n", ( mystrstr(s1, s2)) ? "" : "don't ");
    }
 
    return 0;
}
0
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
28.04.2010, 14:06  [ТС] #8
thanks.немного другое условие,необходимо найти совпадения,а вывести с какой позиции! идет первый повтор.т.е. содержит повторяющиеся слова или нет это типа заметки,возвращать на экран надо позицию,с которой начинается повторяющееся слово или хотя бы его номер по счету в предложении,спасибо.
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
28.04.2010, 15:09 #9
Define, функция strstr() возвращает указатель на подстроку b в строке a. Отнимите от него указатель на строку a - получите индекс в строке а, с которого начинается строка b. Но опять же перед тем, как что-то считать, проверяйте возвращённый указатель на неравенство NULL...
0
Define
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 83
29.04.2010, 18:58  [ТС] #10
если вам не сложно,не могли бы прокомментировать программу?просто только начинаю программировать и не совсем понятны некоторые действия..
0
29.04.2010, 18:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2010, 18:58
Привет! Вот еще темы с ответами:

Обработка символьной информации - C++
Добрый день. Форумчани, очень нужна помощь, вот задание:Распечатать в порядке, обатном алфавитному, все буквы, которые входят в текст не...

ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ В С++ - C++
помогите, написать код программы, экзамен скоро, очень надо. Нужно определить количество слов, начинающихся с буквы &quot;c&quot;

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

Обработка символьной информации - C++
Помогите разработать программу где дефис в доменном имени может быть только одиночным. есть пример программы // Подсчет гласных...


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

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

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