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

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

Войти
Регистрация
Восстановить пароль
 
Assign_me_plz
5 / 5 / 0
Регистрация: 05.06.2011
Сообщений: 40
#1

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

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

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

Работа со строками - C++
Люди, если есть у кого время прошу просветить на тему Работу со строками ! Начили изучать, а примеров никаких нет ! И надо решить четыре...

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

Работа со строками - C++
Подскажите пожалуйсто!!! Как удалить часть строки не создавая при этом новой строки?

работа со строками - C++
Помогите пожайлуста!!! Задание такое: Удалить из текста все слова с четными номерами (сквозная нумерация слов по всему тексту). Кто...

Работа со строками - C++
Прошу помочь написать код для двух программ: 1) Написать программу подсчета числа слов в строке *) 2) написать программу подсчета букв...

Работа со строками - C++
#include "Stdafx.h" #include "conio.h" using namespace std; int main(){ const char* a = {"000","111","222","333"}; const char b...

6
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
15.01.2012, 19:08 #2
Цитата Сообщение от Assign_me_plz Посмотреть сообщение
Знатоки С\С++
std::string::find
0
Assign_me_plz
5 / 5 / 0
Регистрация: 05.06.2011
Сообщений: 40
15.01.2012, 19:16  [ТС] #3
Полный код, если вам не сложно.
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
15.01.2012, 19:18 #4
Цитата Сообщение от Assign_me_plz Посмотреть сообщение
С\С++
Не понял ничего практически, но смутно догадываюсь, что что-то из
strstr()
strchr()
strpbrk()
0
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 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
49 / 49 / 18
Регистрация: 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 / 0
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Работа со строками - C++
Всем доброго времени суток! Нужна ваша помощь вот с такой задачкой. Я ввожу с клавы какую-нить строку(ну эт я знаю как написать). далее...

Работа со строками в С++ - C++
Здравствуйте, вы бы не могли мне помочь решить такую задачу: Дана строка, представляющая предложение. Слова в предложении состоят из ...

Работа со строками - C++
ммм, в общем задание такое: Если честно чувствую себя тупым, читая это задание... Препод сказал, что строка вводится без пробелов...


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

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

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