Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22

Программа по работе со строками

10.12.2009, 23:39. Показов 2009. Ответов 14

Студворк — интернет-сервис помощи студентам
Помогите написать программу, которая выдает позицию самого правого вхождения строки t в строку s, или -1, если t не входит в s.
- написать с использованием функций библиотеки string.h
- написать работая со строками как с массивами

Помогите и если сможете то объясните мне как глупой студентке))))))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2009, 23:39
Ответы с готовыми решениями:

Ошибка при работе со строками - поиск и удаление в строке
void __fastcall TForm1::Button2Click(TObject *Sender) { Memo1->Clear(); String t; t = Edit1->Text; int d=0, s; const int kol...

Переход с Builder6 на XE4, проблемы при работе со строками
Извиняюсь за такое название темы, все блочило что не писал Проблема такая , на билдере 6 мой код работал без всяких проблем, как...

Странное поведение при работе со строками: почему программа выводит 8, если в input "МАКС"?
Почему программа выводит 8, если в input: "МАКС"? #include <iostream> #include <string> #include <string.h> using...

14
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2009, 00:29
Гугли алгоритм Кнута Мориса Прата
0
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
11.12.2009, 00:43  [ТС]
А с самим кодом программы не поможите?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2009, 01:19
дело в том что я его сам еще не выучил, я только знаю что он пашет за О(n) и все..
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
11.12.2009, 01:58
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
#include <stdio.h>
#include <string.h>
 
#define MAXLEN 4096
 
int
strpos(char *s, char *t)
{
    char *p, *q;
 
    for(q = NULL, p = s; p = strstr(p, t); q = p, p++)
        ;
    return (q != NULL) ? (q - s) : -1;
}
 
int
main(void)
{
    char s[MAXLEN], t[MAXLEN];
    int ret;
    
    printf("Введите строку s: ");
    fgets(s, sizeof(s), stdin);
    printf("Введите строку t: ");
    fgets(t, sizeof(t), stdin);
 
    ret = strpos(s, t);
    (ret >= 0) ? printf("Строка t входит в строку s в позиции %d.\n", ret + 1) :
                 printf("Строка t не входит в строку s.\n");
    return 0;
}
2
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2009, 07:54
Цитата Сообщение от Gravity Посмотреть сообщение
p = strstr(p, t)
это стандартная функция?
0
 Аватар для Gravity
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
11.12.2009, 14:15
Цитата Сообщение от outoftime Посмотреть сообщение
это стандартная функция?
Разумеется.
0
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
11.12.2009, 21:42  [ТС]
А можете мне поподробнее объяснить код программы?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2009, 21:50
Вот
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int kmp(string t, string s)
{
    string sn = t + '$' + s;
    int n = sn.length(),
        nt = t.length();
    vector <int> pi (n);
    for (int i = 1; i < n; ++i)
    {
        int k = pi[i-1];
        while (k > 0 && sn[i] != sn[k]) --k;
        if (sn[i] == sn[k]) ++k;
        pi[i] = k;
        if (k == nt) return i - 2*nt;
    }
    return -1;
}
 
int main()
{
    string s, t;
    cin >> t >> s;
    cout << ( kmp(t,s) ) << endl;
    return 0;
}
,
рабобочий КМП, только на си++
0
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
11.12.2009, 22:15  [ТС]
outoftime:
Выдаёт ошибку "насчет неожиданного окончания файла пока идет поиск предварительно скомпилированного заголовка." И еще говорится про "stdafx.h" спрашивается про ее использование... так же окно не задерживается на экране... когда я добавила getch() компилятор начинает ругаться...
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
11.12.2009, 23:15
Цитата Сообщение от Panda91 Посмотреть сообщение
когда я добавила getch() компилятор начинает ругаться...
C++
1
2
3
#include <iostream> // or <iostream.h>
//main
system("pause");
это си++ с использованием вектора с СТЛ-я, на чистом си++ не пойдет, я юзал вижуал студию в качестве компилятора.. попробуйте wxDevCpp он должен потянуть..
0
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
11.12.2009, 23:48  [ТС]
outoftime:
А вы не можете мне разъяснить код написанной программы? а то я как то не могу много понять...
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
12.12.2009, 00:30
он сногшибательно быстрый, это не проход за О(n^3). O(n+m) - его асимптотика, это алгоритм Кнута-Морриса-Пратта. Он детально описан на: http://e-maxx.ru/algo/prefix_function тут же примеры кода, правда нам его раз показывали, я только сейчас смог его накодить))
0
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
13.12.2009, 14:57  [ТС]
Цитата Сообщение от outoftime Посмотреть сообщение
C++
1
2
3
#include <iostream> // or <iostream.h>
//main
system("pause");
это си++ с использованием вектора с СТЛ-я, на чистом си++ не пойдет, я юзал вижуал студию в качестве компилятора..
Я тоже использовала Visual Studio в качестве компилятора... выдавал ошибки... fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
что такое С++ с использованием вектора с СТЛ-я?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
13.12.2009, 15:54
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
#include <iostream>
#include <string>
#include <vector>
 
using namespace std;
 
int kmp(string t, string s)
{
    string sn = t + '$' + s;
    int n = sn.size(),
        nt = t.size();
    vector <int> pi (n);
    for (int i = 1; i < n; ++i)
    {
        int k = pi[i-1];
        while (k > 0 && sn[i] != sn[k]) --k;
        if (sn[i] == sn[k]) ++k;
        pi[i] = k;
        if (k == nt) return i - 2*nt;
    }
    return -1;
}
 
int main()
{
    string s, t;
    cin >> t >> s;
    cout << (kmp(t,s)) << endl;
    system("pause");
    return 0;    
}
Добавлено через 1 минуту
если увидишь незнакомую функцию сразу делай следующе:
1 - вводишь в гугл: <функция> c++ preferences
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.12.2009, 15:54
Помогаю со студенческими работами здесь

выпросы по работе со строками
никак не могу понять, в чем ошибка. пытаюсь сравнить строки: отсутствует оператор &quot;==&quot;, соответствующий этим операндам; ...

Ошибки в работе со строками
Дано два символьных файла f и g. Проверить их на совпадение символов. Если отличаются тогда вывести эти символы. Моя программа задачу...

Баг при работе с строками
При использовании функции ChangeNum к уже существующему номеру (пункт меню &quot;работа с одним пользователем&quot; -&gt; &quot;изменить...

Ошибки при работе со строками
Доброго времени суток! Есть такой код #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main...

Ошибка при работе со строками
Доброго времени суток! Казалось бы, простая проблема, но разобраться пока что никак не удаётся. Прошу помочь. Итак, нужно ввести из...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru