Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
1

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

13.05.2012, 16:52. Просмотров 1295. Ответов 10
Метки нет (Все метки)


Определить максимальную одинаковую подстроку, принадлежащую двум
заданным строкам. Порядок следования букв не меняется.
INPUT.TXT OUTPUT.TXT
qwerty ---- ert
dertfg

zaqwsx ---- zaqw
cdezaqwerty



Помогите пожалуйста...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2012, 16:52
Ответы с готовыми решениями:

Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам
По умолчанию Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам....

По заданным двум словам определить, можно ли из букв одного слова составить другое
по заданным двум словам определяет можно ли из букв одного слова составить другое

Изменить порядок следования букв на обратный
Разработать программу для обработки текстовой информации . Консольный интерфейс программы должен...

Проверить порядок следования букв английского алфавита
C клавиатуры пользователем вводятся буквы английского алфавита в порядке их следования. В случае...

10
667 / 195 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 17:28 2
=)

Добавлено через 33 минуты
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <set>
using namespace std;
bool se(string s1,string s2){
    int j=0;
    for (unsigned int i=0;i<s2.length();i++){
        if (j==s1.size()) return 1;
        if (s2[i]==s1[j]) j++;else j=0;
    };
    if (j==s1.size()) return 1;
    return 0;
};
string func(string s1,string s2){
    string maxs="";
    for (unsigned int i=0;i<s1.length();i++){
        string temp="";
        for(unsigned int j=i;j<s1.length();j++){
            temp+=s1[j];
            if (se(temp,s2) && maxs.size()<temp.size()) maxs=temp;
        };
    };
    return maxs;
};
int main(){
    ifstream in("input.txt");
    ofstream out("output.txt");
    string s1,s2;
    in>>s1>>s2;
    out<<func(s1,s2);
    return 0;
}
//Много стараний... прошу плюсик
2
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:19  [ТС] 3
Огромное спасибо!Благодарность будет!!!!
0
667 / 195 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:29 4
Есть баг?
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:30  [ТС] 5
Все да надо было просто сin i cout mesto in out))
0
667 / 195 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:31 6
Цитата Сообщение от greategi Посмотреть сообщение
Все да надо было просто сin i cout mesto in out))
Отлично.
1
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:31  [ТС] 7
Можешь коментарии дописать к булевой функцыи и к стринг функцыиии! И дай свой вебмани!
0
667 / 195 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:40 8
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
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <set>
using namespace std;
// функция se возвращает 1 в случае, если s1 является подстрокой s2 и 0 в противном случае
bool se(string s1,string s2){
    int j=0;
    for (unsigned int i=0;i<s2.length();i++){// идём по всем элементам 1-й строки
        if (j==s1.size()) return 1;//если набранный размер достиг размера s1, тогда s1 подстрока s2, вернуть 1 
        if (s2[i]==s1[j]) j++;else j=0;//когда набранные элементы совпадают, увеличиваем счётчик того, сколько мы набрали совпадающих символов подряд
    };
    if (j==s1.size()) return 1;// ещё одна проверка после цикла, т.к j могло увеличиться в i=s2.length()
    return 0;// ну и в случае если мы её не вышли из функции => s1 не подстрока s2
};
//функция находит ответ (строку максимальной длины, которая одновременно является подстрокой обоих строк (s1 и s2))
string func(string s1,string s2){
    string maxs="";// изначально ответ - пустая строка, т.к она является подстрокой обоих и её длина минимальна
    for (unsigned int i=0;i<s1.length();i++){ //идём в цикле по всем символам 1-й строки
        string temp="";
        for(unsigned int j=i;j<s1.length();j++){ //идём в цикле от текущей позиции до конца 1-й строки
            temp+=s1[j];// заносим в конец строки temp значение из 1-й строки
//таким образом мы переберём все варианты подстрок 1-й строки
// далее проверяем если текущая подстрока 1-й строки является подстрокой 2-й, то 
// проверяем если её размер больше, чем тот, что когда либо достигался до неё, тогда поменяем нашу итоговую строку
            if (se(temp,s2) && maxs.size()<temp.size()) maxs=temp;
        };
    };
    return maxs;
};
int main(){
    ifstream in("input.txt");
    ofstream out("output.txt");
    string s1,s2;
    in>>s1>>s2;
    out<<func(s1,s2);
    return 0;
}
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:41  [ТС] 9
Давай вебмани! )))))
0
667 / 195 / 29
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:46 10
мне не надо денег, уверяю вас
0
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:49  [ТС] 11
Ну как хочешь ) Просто я так рад ты меня выручил вобще нереально!! Немогбы еше если несоставит труда глянуть ету тему ! Первая прога далжна роботать но там одно но! Точка в Многоугольнике!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2012, 19:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Изменить в тексте порядок следования букв|слов|предложений
#Изменить в тексте порядок следования: #- букв в словах; #- слов в предложениях; #- предложений...

В строке символов изменить на обратный порядок следования цепочек , составленных из малых русских букв
Как реализовать? В указанной строке символов изменить на обратный порядок следования цепочек ,...

Записать все строки файла в новый файл, изменив порядок следования букв в каждой строке на противоположный.
Помогите пожалуйста с вот этой задачей: Дан текстовый файл. Записать все строки файла в новый...

Записать все строки файла в новый файл, изменив порядок следования букв в каждой строке на противоположный
дан текстовой файл. Записать все строки файла в новый файл, изменив порядок следования букв в...

Записать все строки файла в новый файл, изменив порядок следования букв в каждой строке на противоположный
Дан текстовый файл. Записать все строки файла в новый файл, изменив порядок следования букв в...

Записать все строки файла в новый файл, изменив порядок следования букв в каждой строке на противоположный
Дан текстовый файл. Записать все строки файла в новый файл, изменив порядок следования букв в...


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

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

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