Форум программистов, компьютерный форум CyberForum.ru

небольшой вопрос про совмещение строк - C++

Восстановить пароль Регистрация
 
dan_strong
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
21.01.2011, 21:41     небольшой вопрос про совмещение строк #1
всем приятного времени суток))сразу извиняюсь если тема не в том разделе вот назрела задачка....помогите разобраться..
в общем: нам даны 3 строки символьного вида s1, s2 и s3. s1 и s2 мы вводим, а s3 пустая. и надо чтобы создалась новая строка в s3 путем совмещения последних n букв первой строки и первых n букв второй строки, если эти буквы совпадают! то есть, если у нас строки : корова и вагон, то результатом должна быть строка коровагон! а если совпадений нет, то записывается только первая строка.во как... надо функцию вида void A(char *s1, char *s2, char *s3).
заранее очень благодарен))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2011, 21:41     небольшой вопрос про совмещение строк
Посмотрите здесь:

Небольшой вопрос про наследование. C++
C++ Небольшой вопрос по массивам
Работа с указателями(небольшой вопрос насчет преобразований) C++
небольшой вопрос..... C++
Совмещение строк, удаление файла. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
21.01.2011, 23:58     небольшой вопрос про совмещение строк #2
спасибо за задачку )
Мой сонный мозг выдумал следующее:

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
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
char *append_char ( const char *s, const char c )
{
    std::size_t len = std::strlen ( s );
    char *ret = new char[len + 2];
 
    std::strcpy ( ret, s );
    ret[len] = c;
    ret[len + 1] = '\0';
 
    return ret;
}
 
void MyFunc(char *s1, char *s2)
{
    unsigned int same=0;
    bool fooFlag=true;
    char *s3;
    s3 = s1;
    for (unsigned i =0; i < strlen(s2); ++i)
    {
        for (unsigned j = strlen(s1); j > 0; --j)
        {
            if (s1[j]==s2[i])
            {
                same = strlen(s1)-j;
                for (unsigned g = j; g < strlen(s1); ++g)
                {
                    if (!fooFlag)
                        break;
                    for (unsigned h=0; h < strlen(s2); ++h)
                    {
                        if (s1[g]!=s2[h])
                        {
                            if (!fooFlag)
                                break;
                            for (unsigned o=same; o < strlen(s2); ++o)
                            {
                                s3 = append_char(s3,s2[o]);
                                cout << s3 << endl;
                            }
                            fooFlag=false;
                        }
                    }
                }
            }
        }
    }
    system("pause");
}
 
int main ()
{
    char s1[]="qwertyuiopasdfghjk",s2[]="wertyuiopasdfghjklm";
    MyFunc(s1, s2);
}
На упрощение не копал, вероятно можно чтото и убрать, но я изначально готовил себя к массе For
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
22.01.2011, 00:03     небольшой вопрос про совмещение строк #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<cstdlib>
using namespace std;
 
void f(char* a, char* b){
    string s(a), s1(b);
    for(auto it=s.begin(); it!=s.end(); ++it){
        if(equal(it, s.end(), s1.begin())){
            s.erase(it, s.end());
            cout<<s<<s1;
            exit(0);
        }
    }
    cout<<s;
}
 
int main(){
    char s[50], s1[50];
    cin.getline(s, sizeof(s));
    cin.getline(s1, sizeof(s1));
    f(s, s1);
}
dan_strong
6 / 6 / 0
Регистрация: 28.12.2010
Сообщений: 113
22.01.2011, 00:24  [ТС]     небольшой вопрос про совмещение строк #4
ого...спасибо)) буду щас разбираться))
zulkis
 Аватар для zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.01.2011, 00:30     небольшой вопрос про совмещение строк #5
Хм, моя прога работает для правильных )) Щас погонял её на заведомо неправильные входные данные - несет ересь. :\
igorrr37
 Аватар для igorrr37
1594 / 1222 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
22.01.2011, 01:09     небольшой вопрос про совмещение строк #6
вот с тремя указателями
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include<iostream>
#include<cstring>
using namespace std;
 
void f(char* a, char* b, char* c){
    string s(a), s1(b);
    for(auto it=s.begin(); it!=s.end(); ++it){
        if(equal(it, s.end(), s1.begin())){
            s.erase(it, s.end());
            s+=s1;
            break;
        }
    }
    strcpy(c, s.c_str());
}
 
int main(){
    char s[50], s1[50], s2[100];
    cin.getline(s, sizeof(s));
    cin.getline(s1, sizeof(s1));
    f(s, s1, s2);
    cout<<s2;
}
Yandex
Объявления
22.01.2011, 01:09     небольшой вопрос про совмещение строк
Ответ Создать тему
Опции темы

Текущее время: 18:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru