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

Объединение двух массивов. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
08.10.2011, 22:47     Объединение двух массивов. #1
Добрый день!!!!

Стоит задача из двух массивов сделать один.
Первый массив А {"1111111133333333"};
Второй массив В {"22224444"};
Нужно сделать массив С вида {"111111112222333333334444"};

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

Подскажите, пожалуйста, где ошибка?

Вот код программы (не очень рациональный конечно!!!)

Код
#include <iostream>
#include <conio.h>
#include <fstream>
#include <clocale>
#include <cstdlib>

using namespace std;

const int size_1=17, size_2=9, size_3=2, size_4=11;

int main ()
{
    setlocale (LC_ALL, "Russian"); 
    char A [17] = {"1111111133333333"};
    char B [9] = {"22224444"};
   
   
    cout << "Вывод А: " << endl;
    for (int i=0; i<size_1; i++) cout << A [i] << " "; 
    cout << endl;
    cout << " Вывод B: " << endl;
    for (int i=0; i<size_2; i++) cout << B [i] << " ";
    cout << endl << endl;
    
    char temp_1 [2][6] = {{0}}; 
    int temp_1_i=0;
    int temp_1_j=0;
 
    for (int i=0; i<size_1; i++) { 
       if (i%8==0 && i)
       {
       temp_1_i++;
       temp_1_j=0;
       }
    temp_1[temp_1_i][temp_1_j++]=A[i];
        }
    
    
    cout << "temp_1 (разбивка массива по 6 элементов):" << endl;
    for (int i=0; i<2; i++){
        for (int j=0; j<6; j++){
            cout << temp_1 [i][j] << " ";
            }
            cout << endl;
            }
    
    
    char temp_2 [2][4] = {{0}}; 
    int temp_2_i=0;
    int temp_2_j=0;
 
    for (int i=0; i<size_2; i++) { 
       if (i%4==0 && i)
       {
       temp_2_i++;
       temp_2_j=0;
       }
    temp_2[temp_2_i][temp_2_j++]=B[i];
        }
    
    cout << "temp_2 (hазбивка на тетрады массива В):" << endl;
    for (int i=0; i<2; i++){
        for (int j=0; j<4; j++){
            cout << temp_2 [i][j] << " ";
            }
            cout << endl;
            }
    
     // Массив temp_3
    char temp_3[size_3][size_4]={{0}};
    for (int z=0, i=0, g=6; z<2, i<2, g<10; z++, i++, g++){
    memcpy (temp_3 [z], temp_1[i], sizeof (temp_1[i]));
    memcpy (&temp_3 [z][g], temp_2[i], sizeof (temp_2[i]));
    }
    cout << endl;
    cout << "Temp_3:" << endl;
    for (int i=0; i<size_3; i++)
    {
        for (int j=0; j<size_4; j++)
        {
        cout << temp_3 [i][j] << " ";
        }
        cout << endl;    
    }
    cout << endl << endl;
    
    char C [25] = {0};
    int y = 0;
    cout << "C: " << endl;
    for (int i=0; i<2; i++)
    {
        for (int j=0; j<10; j++)
        {
        C [y] = temp_3 [i][j];
        y++;
        }
    }
    
    for (int i=0; i<25; i++) cout << C[i] << " ";
    
    getch ();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2011, 22:47     Объединение двух массивов.
Посмотрите здесь:

Объединение двух массивов C++
Объединение двух массивов в третий C++
C++ Объединение двух массивов
Массивы: объединение двух массивов C++
C++ Объединение двух массивов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
09.10.2011, 04:02     Объединение двух массивов. #2
Corvette, не стал в код заглядывать а сразу попытался что-то изобразить.
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
#include <stdio.h>
#include <string.h>
void str_merge(char* dst, const char* s1, const char* s2);
 
int main() {
   char A[17] = { "1111111133333333" };
   char B[9]  = { "22224444" };
 
   char* arr = new char[strlen(A) + strlen(B) + 1];
   str_merge(arr, A, B);
   puts(arr);
   delete[] arr;
   arr = NULL;
   getchar();
   return 0;
}
 
void str_merge(char* dst, const char* s1, const char* s2) {
    char a, b;
    while(*s1 || *s2) {
         a = (*s1) ? *s1 - '0' : '0';
         b = (*s2) ? *s2 - '0' : '0';
         if(a < b && *s1) 
              *dst++ = *s1++;
         if(b < a && *s2) 
              *dst++ = *s2++;
   }
  *dst = '\0';
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
09.10.2011, 10:22     Объединение двух массивов. #3
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 <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <cstring>
 
int main()
{
    char _a[] = "1111111133333333";
    char _b[] = "22224444";
    
    std::vector<char> a(_a, _a + strlen(_a) ); 
    std::vector<char> b(_b, _b + strlen(_b) );
    std::sort( a.begin(), a.end() );
    std::sort( b.begin(), b.end() );
    std::vector<char> result;
    
    std::set_union(
        a.begin(), a.end(),
        b.begin(), b.end(),
        std::back_inserter( result ) );
        
    std::copy( result.begin(), result.end(), std::ostream_iterator<char> (std::cout) );
}
Результат: http://liveworkspace.org/code/8b4219...ed49b85b96a3ea
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
09.10.2011, 10:26  [ТС]     Объединение двух массивов. #4
Спасибо Всем!!!!!
Yandex
Объявления
09.10.2011, 10:26     Объединение двух массивов.
Ответ Создать тему
Опции темы

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