Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Assign_me_plz
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40
#1

Работа со строками, алгоритм есть.

15.01.2012, 19:02. Просмотров 794. Ответов 6
Метки нет (Все метки)

Задача сводится к тому, что необходимо проверить вхождение в строку определенного набора символов (далее "маска").
Алгоритм реализации прост как моя жизнь, но не хватает знаний. Знатоки С\С++ помогите!
Алгоритм заключаться в том, чтобы проверять по символьно, т.е. берем 1 символ маски, ищем его в строке, после нахождения берем второй и сравниваем со следующим символом строки, и т.д. пока маска не закончится. После выполнения фиксируем последний елемент строки, который подошел к маске, и с него продолжаем поиск, парралельно сделав +1 на счетчике.
Если можете, реализуйте, помогите.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2012, 19:02
Ответы с готовыми решениями:

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

Работа со строками C++
Решил посвятить этой проблеме отдельную тему. В попытке написать ответ к этой...

Работа со строками
char *B = new char ; cout << "Введите текст произвольной длины: " ; ...

Работа со строками
Задание "Есть строка, состоящая из слов, разделенных любым количеством...

Работа со строками
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1...

6
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
15.01.2012, 19:08 #2
Цитата Сообщение от Assign_me_plz Посмотреть сообщение
Знатоки С\С++
std::string::find
0
Assign_me_plz
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40
15.01.2012, 19:16  [ТС] #3
Полный код, если вам не сложно.
0
easybudda
Модератор
Эксперт CЭксперт С++
10051 / 5971 / 1491
Регистрация: 25.07.2009
Сообщений: 11,302
15.01.2012, 19:18 #4
Цитата Сообщение от Assign_me_plz Посмотреть сообщение
С\С++
Не понял ничего практически, но смутно догадываюсь, что что-то из
strstr()
strchr()
strpbrk()
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
15.01.2012, 19:21 #5
Assign_me_plz,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
int main()
{
    std::string str1, str2;
    
    std::cout << "Enter string 1: ";
    std::getline(std::cin, str1);
    std::cout << "Enter string 2: ";
    std::getline(std::cin, str2);
    
    std::cout << "String 1 is "
              << (str1.find(str2) != std::string::npos ? "" : "not ")
              << "contains string 2" << std::endl;
        
    
    return 0;
}
0
megastriker
51 / 51 / 39
Регистрация: 05.12.2010
Сообщений: 261
15.01.2012, 21:36 #6
подойдет функция strstr(char *s1, char *s2) из <string.h>, которая проверяет, есть ли подстрока s2 в s1.

ну а если ею пользоваться нельзя, то можно написать функцию сравнения, где поочередно берутся по элементу из маски и строки и сравниваются.
1
Assign_me_plz
5 / 5 / 4
Регистрация: 05.06.2011
Сообщений: 40
16.01.2012, 01:25  [ТС] #7
Черт, ребята, перепутал, мне надо посчитать все то что я раньше написал + исходную строку заменить на ( в начале написать *наша маска*(*кол-во повторений*)*вся остальная строка без нашей маски*).

Добавлено через 1 час 24 минуты
Собственно прогу написал, без финальной части ( удаление масок из строки и т.д.)
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
#include<string.h>
#include<conio.h>
#include<stdio.h>
 
int main()
{
    char row[256],mask[256],aftermask[256];;
    int i,n;
    
    printf("Enter row:\n");
    scanf("%s",row);
    printf("Enter mask :\n");
    scanf("%s",mask);
  n=0;
 int t=strlen(mask);
  for ( i = 0;  i<=(strlen(row)); i++)
{
        if (row[i]==mask[0])
{
  for (int k = 1; k<=(strlen(mask)); k++)
 {
 if (row[i+k]!=mask[k])break;
 if (k==(t-1)) (n=n+1);
 }
}
}
printf("%i",n);
printf("\t < count of mask incoming in our string");
 
getch();
    return (0);
}
0
16.01.2012, 01:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 01:25

Работа со строками
char* stringRes=new char; Почему эта строка работает правильно и не выдает...

Работа со строками
Люди, если есть у кого время прошу просветить на тему Работу со строками !...

Работа со строками
Товарищи, такая вот проблема. Есть задача. Прочитать строки из файла, а потом...


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

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

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