Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
#1

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

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

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

zaqwsx ---- zaqw
cdezaqwerty



Помогите пожалуйста...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2012, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам. Порядок следования букв не меняется. (C++):

Перенести все цифры в конец строки, при этом порядок букв не меняется - C++
помогите написать программу пожалуйста Даны предложения в котором встречаются цифры. Перенести все цифры в конец строки, при этом порядок...

Определить строки в файле, содержащие максимальную по длине подстроку-палиндром - C++
Задан текстовый файл input.txt. Требуется определить строки этого файла, содержащие максимальную по длине подстроку-палиндром. Если таких...

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

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

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

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

10
Ternsip
660 / 188 / 6
Регистрация: 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
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:19  [ТС] #3
Огромное спасибо!Благодарность будет!!!!
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:29 #4
Есть баг?
1
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:30  [ТС] #5
Все да надо было просто сin i cout mesto in out))
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:31 #6
Цитата Сообщение от greategi Посмотреть сообщение
Все да надо было просто сin i cout mesto in out))
Отлично.
1
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:31  [ТС] #7
Можешь коментарии дописать к булевой функцыи и к стринг функцыиии! И дай свой вебмани!
0
Ternsip
660 / 188 / 6
Регистрация: 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
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:41  [ТС] #9
Давай вебмани! )))))
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2012, 19:46 #10
мне не надо денег, уверяю вас
0
greategi
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 20
13.05.2012, 19:49  [ТС] #11
Ну как хочешь ) Просто я так рад ты меня выручил вобще нереально!! Немогбы еше если несоставит труда глянуть ету тему ! Первая прога далжна роботать но там одно но! Точка в Многоугольнике!
0
13.05.2012, 19:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2012, 19:49
Привет! Вот еще темы с ответами:

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

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

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

Дан текст, состоящий из латинских, русских букв и цифр. Вывести на печать все строчные латинские буквы, сохраняя порядок их следования. - Pascal ABC
Дан текст, состоящий из латинских, русских букв и цифр. Вывести на печать все строчные латинские буквы, сохраняя порядок их следования. ...


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

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

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