Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
1

Определить позицию, с которой подстрока входит в строку

23.10.2016, 19:00. Просмотров 2023. Ответов 64
Метки нет (Все метки)

не работает программа, выдает ошибки помогите плз
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
49
50
51
52
53
54
55
56
57
58
59
60
61
//  Лабораторная работа №3
//  Массивы
//  
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int f(char *s, char *c, int n)
{
    int i, j;       // Счетчики для циклов
    int lenC, lenS; // Длины строк
        
    //Находим размеры строки исходника и искомого
    for (lenC = 0; c[lenC]; lenC++);
    for (lenS = 0; s[lenS]; lenS++);
 
    for (i = 0; i <= lenS - lenC; i++) // Пока есть возможность поиска
    {
        for (j = 0; s[i + j] == c[j]; j++); // Проверяем совпадение посимвольно
        // Если посимвольно совпадает по длине искомого
        // Вернем из функции номер ячейки, откуда начинается совпадение
        if (j - lenC == 1 && i == lenS - lenC && !(n - 1)) return i;
        if (j == lenC)
        if (n - 1) n--; 
        else return i;
        }
    //Иначе вернем -1 как результат отсутствия подстроки
    return -1;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "rus");//Русификация консоли
    char cont('1');
    while (cont - '0')
    {
        char s[255];//Объявление строки
        char c[255];//Объявление подстроки
        cout << "Введите строку "<<endl;
        cin.getline(s, 255);
        cout << "Введите подстроку "<<endl;
        cin.getline(c, 255);
        int i, n = 0, l = 0;//Объявление переменных
        for (i = 1; n != -1; i++)
        {
            n = f(s, c, i);
            if (n >= 0)
            {
                n += 1;
                cout << "Позиция, с которой подстрока входит в строку = " << n << endl;
                l++;
            }
        }
        if (l==0)
            cout << "Подстрока не входит в строку." << endl;
        cout << "Хотите продолжить работу программы? (Да - любой символ, нет - 0)" << endl;
        cin >> cont;
        cin.ignore(255, '\n');
    }
}
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2016, 19:00
Ответы с готовыми решениями:

Определить, сколько раз данная подстрока входит в строку
Вводятся подстрока и строка. Определить, сколько раз данная подстрока входит в строку. Наложение...

Определить, сколько раз в строку входит заданная подстрока
Задача дана строка. определить сколько раз входит в нее группа abc с++ Нужно писать на с++ //...

Дана строка. Определить, сколько раз входит в нее подстрока "abc"
написать нужно 2 программы массивы и функции strink.

Определить, входит ли в данную строку пробел
Определить, входит ли в данную строку пробел, и на каких позициях он расположен. P.S. Если это...

Определить, сколько раз входит в строку группа букв abc
Дана строка. Определить, сколько раз входит в нее группа букв abc.

64
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
24.10.2016, 19:56  [ТС] 21
можете ссылку дать откуда визуал студио 2010 скачать можно нормальный??? я какоюто фигню качаю все время.
0
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
24.10.2016, 19:58 22
Пишет, что у тебя две функции main() (в 7 строке и в 43). Осатвь в коде одну.

Добавлено через 54 секунды
Цитата Сообщение от Sacredlife Посмотреть сообщение
можете ссылку дать откуда визуал студио 2010 скачать можно нормальный??? я какоюто фигню качаю все время.
Ты делаешь фигню, а не качаешь. У меня такая же студия, и что? Другая студия тебе мало поможет, если будешь продолжать фигню делать.
0
Даценд
Модератор
Эксперт .NET
5143 / 4376 / 2827
Регистрация: 20.04.2015
Сообщений: 7,880
24.10.2016, 19:59 23
Цитата Сообщение от Sacredlife Посмотреть сообщение
через пустой проект не открывает ,нет куда текст писать
Ну естественно, он же пустой.
Теперь начинаем его наполнять тем, что нужно.
Правая кнопка мыши по папке Resource Files (Файлы исходного кода) ->Add (Добавить) -> New Item (Создать элемент).
В списке ищем C++ File (Файл C++), вводим имя файла, щелкаем Add (Добавить).
И опаньки, уже есть куда текст писать.
0
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
24.10.2016, 20:02 24
Цитата Сообщение от Даценд Посмотреть сообщение
И опаньки, уже есть куда текст писать.
С двумя main()...
0
24.10.2016, 20:02
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 14:06  [ТС] 25
так
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 14:09  [ТС] 26
а что делать если этой папки нет??
0
Миниатюры
Определить позицию, с которой подстрока входит в строку  
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 14:11  [ТС] 27
не пойму ничего, где эта папка находится ?
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 14:15  [ТС] 28
убрал 7 строчку
0
Миниатюры
Определить позицию, с которой подстрока входит в строку  
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
25.10.2016, 15:14 29
Цитата Сообщение от Sacredlife Посмотреть сообщение
убрал 7 строчку
Лишнюю функцию main(), которая начинается с седьмой строки, нужно убрать, а не седьмую строчку. Убери весь код и вставь код из первого поста, потом жми F7, и выложи вывод компилятора.
0
Даценд
Модератор
Эксперт .NET
5143 / 4376 / 2827
Регистрация: 20.04.2015
Сообщений: 7,880
25.10.2016, 15:34 30
Цитата Сообщение от Sacredlife Посмотреть сообщение
не пойму ничего, где эта папка находится ?
Вот же она:
0
Миниатюры
Определить позицию, с которой подстрока входит в строку  
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:32  [ТС] 31
а, попробую сейчас

Добавлено через 3 минуты
Убери весь код и вставь код из первого поста, потом жми F7, и выложи вывод компилятора

,какой код из первого поста??

Добавлено через 3 минуты
using namespace std;

вот 7 строка же
0
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
25.10.2016, 18:32 32
Цитата Сообщение от Sacredlife Посмотреть сообщение
какой код из первого поста??
Их там разве несколько? Или не знаешь, где находится первый пост?
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:34  [ТС] 33
можешь на скрине показать? вместо чего и что мне написать??

Добавлено через 12 секунд
не знаю, я октрываю там нет ничего, чепуха
0
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
25.10.2016, 18:35 34
Цитата Сообщение от Sacredlife Посмотреть сообщение
вот 7 строка же
Забудь о седьмой сроке.
Цитата Сообщение от nd2 Посмотреть сообщение
Убери весь код и вставь код из первого поста, потом жми F7, и выложи вывод компилятора.
Добавлено через 41 секунду
Цитата Сообщение от Sacredlife Посмотреть сообщение
не знаю, я октрываю там нет ничего,
Что открываешь?
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:36  [ТС] 35
все, увидел, где 59 строк,я что то с страницами напутал, думал разные темы создаются.. щас попробую
0
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
25.10.2016, 18:36 36
Весь код, который сейчас компилируешь (из файла sasa.cpp) убери, а этот вставь:
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
49
50
51
52
53
54
55
56
57
58
59
60
61
//  Лабораторная работа №3
//  Массивы
//  
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int f(char *s, char *c, int n)
{
    int i, j;       // Счетчики для циклов
    int lenC, lenS; // Длины строк
        
    //Находим размеры строки исходника и искомого
    for (lenC = 0; c[lenC]; lenC++);
    for (lenS = 0; s[lenS]; lenS++);
 
    for (i = 0; i <= lenS - lenC; i++) // Пока есть возможность поиска
    {
        for (j = 0; s[i + j] == c[j]; j++); // Проверяем совпадение посимвольно
        // Если посимвольно совпадает по длине искомого
        // Вернем из функции номер ячейки, откуда начинается совпадение
        if (j - lenC == 1 && i == lenS - lenC && !(n - 1)) return i;
        if (j == lenC)
        if (n - 1) n--; 
        else return i;
        }
    //Иначе вернем -1 как результат отсутствия подстроки
    return -1;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "rus");//Русификация консоли
    char cont('1');
    while (cont - '0')
    {
        char s[255];//Объявление строки
        char c[255];//Объявление подстроки
        cout << "Введите строку "<<endl;
        cin.getline(s, 255);
        cout << "Введите подстроку "<<endl;
        cin.getline(c, 255);
        int i, n = 0, l = 0;//Объявление переменных
        for (i = 1; n != -1; i++)
        {
            n = f(s, c, i);
            if (n >= 0)
            {
                n += 1;
                cout << "Позиция, с которой подстрока входит в строку = " << n << endl;
                l++;
            }
        }
        if (l==0)
            cout << "Подстрока не входит в строку." << endl;
        cout << "Хотите продолжить работу программы? (Да - любой символ, нет - 0)" << endl;
        cin >> cont;
        cin.ignore(255, '\n');
    }
}
Потом:
Цитата Сообщение от nd2 Посмотреть сообщение
жми F7, и выложи вывод компилятора.
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:38  [ТС] 37
у меня еще такой вопрос, каким именем обозначать? при создании я написал лаба 3, и тут тоже лаба 3 написал, ошибку выдало, без разницы какое??
0
Миниатюры
Определить позицию, с которой подстрока входит в строку  
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:39  [ТС] 38
вот, а как прямоугильнк сделать черный?? чтобы там вводить цифры результат чтобп оказывалто?
0
Миниатюры
Определить позицию, с которой подстрока входит в строку  
nd2
3100 / 2594 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
25.10.2016, 18:43 39
Цитата Сообщение от Sacredlife Посмотреть сообщение
а как прямоугильнк сделать черный??
Теперь запускай, жми F5.
0
Sacredlife
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 18:51  [ТС] 40
отлично, слушай можно тебя в скайп?? мне еще 2 лабы нужно , там вроде тоже ошибки,текста одногруппников,они сдавали, вроед норм все
0
25.10.2016, 18:51
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2016, 18:51

Определить максимальный по модулю элемент элемент массива и позицию в которой он расположен
Помогите пожалуйста решить задачку по с++; Задан одномерный массив В , состоящий из n...

Определить позицию первого вхождения в заданную строку какого-либо символа
Помогите составить процедуру, позволяющую определить позицию первого вхождения в заданную строку...

Определить позицию первого вхождения в заданную строку какого-либо символа из второй заданной строки
б) Даны две строки произвольного текста. Составить процедуру, позволяющую определить позицию...


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

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

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