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

Слияние двух строк с перестановкой символов - C++

Восстановить пароль Регистрация
 
Nomolos
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 6
21.01.2013, 14:47     Слияние двух строк с перестановкой символов #1
Необходимо произвести слияние 2х строк, вводимых в консоль и вывод третьей строки, объединяющей в себе первую и вторую строку, НО, в третьей строке символы должны быть перегруппированы в порядке "А1А2В1В2..А19А20В19В20", где А1А2 - символы первой строки, В1В2 - символы второй строки.
Насколько я понял, данное слияние имеет какое-то отношение к массивам или матрицам, но к сожалению не знаком с языком, поэтому не могу представить структуру программы

Насколько я понял, действовать надо примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "stdlib.h"
#include "time.h"
    
    using namespace std;
 
int main ()
{
    char str[10];
    int n=0,i,j;
    puts("Vvedite stroku 1");
}
На этом мои знания ограничены
Премного благодарен любому, кто поможет разобраться и все объяснит
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2013, 14:47     Слияние двух строк с перестановкой символов
Посмотрите здесь:

C++ Слияние двух строк
C++ довести до ума код .сравнение двух строк и вывод общих символов
Даны три строки. Определить, можно ли из символов первых двух строк получить третью строку. C++
Осуществить сравнение первых n символов двух строк C++
даны три строки. определить можно ли из символов первых двух строк получить третью строку C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 1
21.01.2013, 15:04     Слияние двух строк с перестановкой символов #2
Например, так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main ()
{
    char str1[100],str1[100],str3[200];
    int n=0,i,j;
    cout<<"Vvedite stroku 1:";
    cin>>str1;
    cout<<"Vvedite stroku 2:";
    cin>>str2;
    for(int i=0;;i+=2)
    {
            str3[2*i]=str1[i/2];
            if(str3[2*i]==0)break;
            str3[2*i+1]=str1[i/2+1];
            if(str3[2*i+1]==0)break;
            str3[2*i+2]=str2[i/2];
            if(str3[2*i+2]==0)break;
            str3[2*i+3]=str2[i/2+1];
            if(str3[2*i+3]==0)break;
    }
    cout<<str3;
    systmm("pause");
}
Nomolos
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 6
21.01.2013, 15:09  [ТС]     Слияние двух строк с перестановкой символов #3
Цитата Сообщение от zss Посмотреть сообщение
char str1[100],str1[100],str3[200];
Не очень понял эту строку.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 1
21.01.2013, 15:25     Слияние двух строк с перестановкой символов #4
char str1[100],str2[100],str3[200];
str1 - первая строка символов
str2 - вторая строка символов
str3 - результирующая строка
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
21.01.2013, 15:27     Слияние двух строк с перестановкой символов #5
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
#include <algorithm>
#include <iostream>
#include <iterator>
#include <string>
 
template < typename iterator, typename inserter >
void func(iterator first1, iterator last1, 
    iterator first2, iterator last2, inserter output)
{
    while (first1 != last1 && first2 != last2)
    {
        *output++ = *first1++;
        if (first1 == last1)
            break;
        *output++ = *first1++;
        
        *output++ = *first2++;
        if (first2 == last2)
            break;
        *output++ = *first2++;
    }
 
    while (first1 != last1)
        *output++ = *first1++;
 
    while (first2 != last2)
        *output++ = *first2++;
}
 
int main()
{
    std::string s1("string1");
    std::string s2("string23");
    std::string result;
    func(s1.cbegin(), s1.cend(), s2.cbegin(), s2.cend(), std::back_inserter(result));
    std::cout << result << std::endl;
}
Nomolos
0 / 0 / 0
Регистрация: 21.01.2013
Сообщений: 6
21.01.2013, 18:57  [ТС]     Слияние двух строк с перестановкой символов #6
Второе сильно написано
Цитата Сообщение от Пaтрик Посмотреть сообщение
int main()
{
* * std::string s1("string1");
* * std::string s2("string23");
* * std::string result;
* * func(s1.cbegin(), s1.cend(), s2.cbegin(), s2.cend(), std::back_inserter(result));
* * std::cout << result << std::endl;
}
Что значат эти строки?

Добавлено через 2 минуты
Всем большое спасибо, буду просматривать тему в надежде что кто-нибудь выложит код с комментариями, второй вариант для меня слишком сложен, но тоже помог в целях расширения кругозора)

Добавлено через 3 часа 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
#include "stdafx.cpp"
 
int main ()
{
    char str1[100],str2[100],str3[200];
    int n=0,i,j;
    cout<<"Vvedite stroku 1:";
    cin>>str1;
    cout<<"Vvedite stroku 2:";
    cin>>str2;
    for(int i=0;;i+=2)
    {
            str3[2*i]=str1[i/2];
            if(str3[2*i]==0)break;
            str3[2*i+1]=str1[i/2+1];
            if(str3[2*i+1]==0)break;
            str3[2*i+2]=str2[i/2];
            if(str3[2*i+2]==0)break;
            str3[2*i+3]=str2[i/2+1];
            if(str3[2*i+3]==0)break;
    }
    cout<<str3;
    systmm("pause");
}
Во время компиляции происходит ошибка, не подскажете из-за чего?

1>------ Построение начато: проект: Zachita1, Конфигурация: Debug Win32 ------
1>Build started 22.01.2013 1:54:09.
1>InitializeBuildStatus:
1> Touching "Debug\Zachita1.unsuccessfulbuild".
1>ClCompile:
1> Zachita1.cpp
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(7): error C2065: cout: необъявленный идентификатор
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(8): error C2065: cin: необъявленный идентификатор
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(9): error C2065: cout: необъявленный идентификатор
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(10): error C2065: cin: необъявленный идентификатор
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(22): error C2065: cout: необъявленный идентификатор
1>c:\users\михаил\documents\visual studio 2010\projects\zachita1\zachita1\zachita1.cpp(23): error C3861: systmm: идентификатор не найден
1>
1>СБОЙ построения.
1>
1>Time Elapsed 00:00:00.55
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Yandex
Объявления
21.01.2013, 18:57     Слияние двух строк с перестановкой символов
Ответ Создать тему
Опции темы

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