Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137

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

23.10.2016, 19:00. Показов 6514. Ответов 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)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.10.2016, 19:00
Ответы с готовыми решениями:

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

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

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

64
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
25.10.2016, 19:33
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Sacredlife Посмотреть сообщение
мб я зря удалил инклуде??
Не зря.
Цитата Сообщение от Sacredlife Посмотреть сообщение
сейчас. там пишет необъявлен идентификатор еще, с тем разобрался, что такое идентификатор?
И хватит скрины показывать. Код выкладывай.
1
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 19:43  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
то где
помоги плз

Добавлено через 2 минуты
Цитата Сообщение от nd2 Посмотреть сообщение
Код выкладывай.
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
62
// volume.cpp: определяет точку входа для консольного приложения.
//
//"Линейная программа"
//Перьков Д. гр. 14КП1
//Задание: для  полого цилиндра высотой h, внешним радиусом r1 и внутренним радиусом r2 разработать программу вычисления объема
 
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <cmath>
using namespace std;
//#define p 3,141592
 
int _tmain(int argc, _TCHAR* argv[])
{
    //  SetConsoleCP(1251);
    //SetConsoleOutputCP(1251);
    
    float r1, r2, h, V;
    cout<<"Введите внешний радиус"<<endl;
    cin>>r1;
 
    while((cin.fail()==1)||(r1<=0)){
    cout<<"Некорректный ввод \n";
    cin.clear();
    cin.sync();
    cout<<"Введите внешний радиус"<<endl;
    cin>>r1;
    }
 
    cout<<"Введите внутренний радиус"<<endl;
    cin>>r2;
 
    while((cin.fail()==1)||(r2<=0)||(r2>r1)){
    cout<<"Некорректный ввод \n";
    cin.clear();
    cin.sync();
    cout<<"Введите внутренний радиус"<<endl;
    cin>>r2;
    }
 
    cout<<"Введите высоту цилиндра"<<endl;
    cin>>h;
 
    while((cin.fail()==1)||(h<=0)){
    cout<<"Некорректный ввод \n";
    cin.clear();
    cin.sync();
    cout<<"Введите высоту цилиндра"<<endl;
    cin>>h;
    }
 
    V=(r1*r1-r2*r2)*p*h;
 
    cout<<"Объем равен " << V;
 
    getch();
    return 0;
 
}
Добавлено через 22 секунды
вот код пишет с файлом что то

Добавлено через 2 минуты
1>c:\users\izya\documents\visual studio 2010\projects\лаба 3\лаба 3\лаба 33.cpp(7): fatal error C1083: Не удается открыть файл включение: stdafx.h: No such file or directory
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
25.10.2016, 19:45
Лучший ответ Сообщение было отмечено Sacredlife как решение

Решение

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
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <cmath>
using namespace std;
 
#define p 3,141592
 
int main(int argc, char* argv[])
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
float r1, r2, h, V;
cout<<"Введите внешний радиус"<<endl;
cin>>r1;
 
while((cin.fail()==1)||(r1<=0)){
cout<<"Некорректный ввод \n";
cin.clear();
cin.sync();
cout<<"Введите внешний радиус"<<endl;
cin>>r1;
}
 
cout<<"Введите внутренний радиус"<<endl;
cin>>r2;
 
while((cin.fail()==1)||(r2<=0)||(r2>r1)){
cout<<"Некорректный ввод \n";
cin.clear();
cin.sync();
cout<<"Введите внутренний радиус"<<endl;
cin>>r2;
}
 
cout<<"Введите высоту цилиндра"<<endl;
cin>>h;
 
while((cin.fail()==1)||(h<=0)){
cout<<"Некорректный ввод \n";
cin.clear();
cin.sync();
cout<<"Введите высоту цилиндра"<<endl;
cin>>h;
}
 
V=(r1*r1-r2*r2)*p*h;
 
cout<<"Объем равен " << V;
 
getch();
return 0;
 
}
0
0 / 0 / 0
Регистрация: 23.03.2016
Сообщений: 137
25.10.2016, 20:22  [ТС]
ты гений, спасибо огромное , щас еще последюю дам

Добавлено через 14 минут
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Лаба3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE, "rus");
    int i, Size, p, s, q, r, a, b, g;
    
    cout << "Введите нечетный размер массива: " << endl;
        while((!(cin >> Size)) || (Size % 2 == 0) || (Size < 0)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите нечетный размер массива: " << endl;
    }
 
    cout << "Введите левую границу a: " << endl;
        while(!(cin >> a)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите левую границу a: " << endl;
    }
 
    cout << "Введите правую границу b: " << endl;
        while(!(cin >> b)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите правую границу b: " << endl;
    }
 
    int * d = new int[Size];
 
    for ( i = 0; i < Size; i++) d[i] = a + rand() % (b-a);
    
    cout << "Сформированный массив d: ";
    
    for ( i = 0; i < Size; i++) cout << ' ' << d[i];
    
    cout << endl;
 
    p = Size / 2; // центр;
 
    q = p - 1 ;// левое значение 
 
    s = p + 1 ;// правое значение
 
    for (int g = 1; s < Size; g++)
 
    {
 
        q = p - g;
 
        i = q;
 
        r = d[i];
 
        s= p + g;
 
        i = s;
 
        d[p-g] =  d[i];
 
        d[i] = r;
 
    }
 
    cout << "Обработанный массив d:";
    for ( i = 0; i < Size; i++) 
    cout << " " << d[i];
    delete [] d;
    
    getch();
    return 0;
}
}
Добавлено через 15 секунд
вот, та же ошибка как ее убрать????

Добавлено через 20 минут
все я вроде нашаманил что, заработало.

Добавлено через 52 секунды
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <iostream>
#include <cmath>
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_CTYPE, "rus");
    int i, Size, p, s, q, r, a, b, g;
    
    cout << "Введите нечетный размер массива: " << endl;
        while((!(cin >> Size)) || (Size % 2 == 0) || (Size < 0)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите нечетный размер массива: " << endl;
    }
 
    cout << "Введите левую границу a: " << endl;
        while(!(cin >> a)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите левую границу a: " << endl;
    }
 
    cout << "Введите правую границу b: " << endl;
        while(!(cin >> b)) 
    {
        cin.clear(); // сбрасывает все биты потока, тоесть поток становится "хорошим"
        cin.sync();//Удалим данные из буффера
        cout << "Введите правую границу b: " << endl;
    }
 
    int * d = new int[Size];
 
    for ( i = 0; i < Size; i++) d[i] = a + rand() % (b-a);
    
    cout << "Сформированный массив d: ";
    
    for ( i = 0; i < Size; i++) cout << ' ' << d[i];
    
    cout << endl;
 
    p = Size / 2; // центр;
 
    q = p - 1 ;// левое значение 
 
    s = p + 1 ;// правое значение
 
    for (int g = 1; s < Size; g++)
 
    {
 
        q = p - g;
 
        i = q;
 
        r = d[i];
 
        s= p + g;
 
        i = s;
 
        d[p-g] =  d[i];
 
        d[i] = r;
 
    }
 
    cout << "Обработанный массив d:";
    for ( i = 0; i < Size; i++) 
    cout << " " << d[i];
    delete [] d;
    
    getch();
    return 0;
}

вот так вот текст должен выглядеть?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
25.10.2016, 20:57
Цитата Сообщение от Sacredlife Посмотреть сообщение
вот так вот текст должен выглядеть?
Компилятор подскажет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2016, 20:57

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
65
Ответ Создать тему
Новые блоги и статьи
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru