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

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

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

указатели (посчитать кол-во вхождений подстроки в строку) - C++

02.12.2012, 19:38. Просмотров 490. Ответов 9
Метки нет (Все метки)

Не могу дописать программу.
Заранее извените, ещё не умею вставлять код программы...
Выделить код и на панели, где вводите текст, ткнуть на соответствующий язык.
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 "delLast.h"
#include <iostream>
#include <string>
using namespace std;
int main ()
{
    char tmp [80];
    cout<<"Enter tmp->"<<'\t';
    cin.getline (tmp,80);
    char* pr (new char [strlen (tmp)+1]);
    strcpy_s(pr,strlen (tmp)+1,tmp);
    char pstr [20]; 
    cout<<"Enter pstr->"<<'\t';
    cin.getline (pstr, 20);
    char* ps(&tmp[0]);
    char* pss(&pstr[0]);
    int n=0;
    char*p , *r;
    while (*ps)
    {
        for (p=ps, r=pss; *r && *p == *r; p++, r++);
        if (!*r)
        {
            ++n;
            ps=p;
        }
        else 
            ps++;
    }
           void delLast (char* ps, const char& pss)
    {
        char *pIn, *pOut;
        pIn = pOut = ps + strlen (ps)-1;
        while (*pIn != pss && pIn >= ps)
        { pIn--; pOut--;}
        if (pIn<ps)
        {pOut=ps; return ; }
        for ( ++pIn; *pIn; pIn++, pOut++)
            *pOut = *pIn;
        *pOut='\0';
    }
        cout<<"n="<<n<<endl;
    cout<<tmp<<endl;
    return 0;
}
В этой программе нужно посчитать кол-во вхождений подстроки в строку, и после удалить последнее вхождение, вывести результат. Почему-то сумму вхождений пишет 0. Помогите разобраться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2012, 19:38     указатели (посчитать кол-во вхождений подстроки в строку)
Посмотрите здесь:

Как подсчитать количество вхождений подстроки в строку C++
C++ Определить количество вхождений подстроки в заданную строку
C++ Определить число вхождений в строку подстроки "аба", вывести символы строки, не являющейся буквами или цифрами
С++. Массивы. Указатели. Определить кол-во и сумму отрицательных элементов C++
Массивы-Указатели. Определить кол-во и суму элементов, которые попадают в диапазон А,В C++
C++ Как ускорить работу (поиск вхождений подстроки)?
Разбить строку на все "связные" подстроки. Получившиеся подстроки записать в вектор C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 19:47     указатели (посчитать кол-во вхождений подстроки в строку) #2
Цитата Сообщение от SantaCruz Посмотреть сообщение
for (p=ps, r=pss; *r && *p == *r; p++, r++);
Очень интересный способ выяснять условия=) и не ругается? =)

Добавлено через 1 минуту
А вставлять код просто, в форме которой вы вводите свой текст есть кнопочка "C++" на ней нажимаете и появляется BBкод
C++
1
2
3
4
5
6
int main(void)
{
std::cout<<"heloy";
system("pause>>void");
return 0;
}
SantaCruz
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 5
02.12.2012, 19:47  [ТС]     указатели (посчитать кол-во вхождений подстроки в строку) #3
Ну он ругается только из-за void я пробовал писать его в другом файле и вызывать, но все-равно не то
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 19:54     указатели (посчитать кол-во вхождений подстроки в строку) #4
Вам как минимум надо правильно задать условие цикла и не забывайте про breack; это выход из цикла, оперируйте if ифами и тд...
SantaCruz
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 5
02.12.2012, 19:58  [ТС]     указатели (посчитать кол-во вхождений подстроки в строку) #5
а как быть с void dellast?
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 19:59     указатели (посчитать кол-во вхождений подстроки в строку) #6
Цитата Сообщение от SantaCruz Посмотреть сообщение
void delLast (char* ps, const char& pss)
Это вот здесь? а чот вы этом хотите сказать? или это объявление функции? что вы вообще хотели тут сделать?
SantaCruz
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 5
02.12.2012, 20:03  [ТС]     указатели (посчитать кол-во вхождений подстроки в строку) #7
Да.Тут он пишет недопустимые локальные переонпределения функции. У меня имеется образец, я пытался по нему сделать, это в принципе он и есть только в образце удалялся один символ
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 20:06     указатели (посчитать кол-во вхождений подстроки в строку) #8
строкой
C++
1
2
3
4
5
6
7
8
9
10
11
void delLast (char* ps, const char& pss)
{
тело функции
}
 
int main (void)
{
....
delLast (Аргументы функции);
....
}
Вот так должно быть в теле функции нельзя объявлять другие функции. по такому типу только в структурах и классах можно))
SantaCruz
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 5
02.12.2012, 20:09  [ТС]     указатели (посчитать кол-во вхождений подстроки в строку) #9
А под "аргументами функции" что подразумевается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2012, 20:16     указатели (посчитать кол-во вхождений подстроки в строку)
Еще ссылки по теме:

C++ Найти количество и места вхождений подстроки в строку
C++ Функции посчитывающие количество вхождений подстроки в строку, реализация через char* и через шаблон
C++ Функция замены всех вхождений подстроки
C++ Посчитать количество вхождений заданного символа в строке, введённой пользователем
Запросить строку, посчитать количество вхождений каждой буквы, и вывести статистику C++

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

Или воспользуйтесь поиском по форуму:
MaRKerNSK
24 / 11 / 1
Регистрация: 26.11.2012
Сообщений: 110
Записей в блоге: 2
02.12.2012, 20:16     указатели (посчитать кол-во вхождений подстроки в строку) #10
Цитата Сообщение от MaRKerNSK Посмотреть сообщение
(char* ps, const char& pss)
вот они только сюдда вводишь уже
C++
1
2
3
4
5
6
7
main ()
{
char * arg1;
char const arg2;
 
func(arg1, arg2);
}
Yandex
Объявления
02.12.2012, 20:16     указатели (посчитать кол-во вхождений подстроки в строку)
Ответ Создать тему
Опции темы

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