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

Образовать 2 массива из одного - C++

Восстановить пароль Регистрация
 
itel
0 / 0 / 0
Регистрация: 07.07.2014
Сообщений: 27
08.07.2014, 00:33     Образовать 2 массива из одного #1
Дан массив (А) с К элементов (К-четное число). Образовать 2 массива (В и С), переписывая в массив В первую половину массива А, в массив С - вторую половину массива А.
Проблемы с массивами
Спасибо за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2014, 00:33     Образовать 2 массива из одного
Посмотрите здесь:

вставка одного массива в другой C++
C++ Дан массив А. Образовать реверс массива А в массиве В. Вывести оба массива и индексы элементов на экран в виде трех столбцов.
C++ Копирование одного массива в другой
Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B C++
C++ Из одного массива сформировать другой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
08.07.2014, 00:59     Образовать 2 массива из одного #2
что-то типо этого:
C++
1
2
3
4
5
6
7
8
const int k = 100;  // Количество элементов массива
int a[k], b[k/2], c[k/2], i = 0;
for (; i < k/2; i++){
    b[i] = a[i];
}
for (int s = 0; s < k/2 ; s++){
    c[s] = a[i];
}
Roodey
4 / 4 / 1
Регистрация: 23.05.2013
Сообщений: 36
08.07.2014, 05:11     Образовать 2 массива из одного #3
srin, не совсем, насколько я понимаю у вас получатся два одинаковых массива.
itel, возьмите то, что сделал srin, но циклы такие:
C++
1
2
3
4
for(int i = 0; i < k / 2; i++)
  b[i] = a[i]
for(int i = k / 2; i < k; i++)
  c[i] = a[i]
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
08.07.2014, 08:56     Образовать 2 массива из одного #4
Roodey, а ничего, что у вас во втором цикле for начальный элемент массива "c" будет "k/2"?

itel, у меня ошибочка вышла. во втором цикле забыл увеличить "i". надо : "(int s = 0; s < k/2 ; s++, i++)".
Kukurudza
104 / 85 / 6
Регистрация: 29.08.2012
Сообщений: 539
08.07.2014, 09:27     Образовать 2 массива из одного #5
srin, Roodey,
C++
1
2
3
4
5
6
7
8
9
10
11
        const int N = 10;
        const int N_2 = N >> 1;
        const int A[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        int B[N_2];
        int C[N_2];
        std::copy(A, A + N_2, B);
        std::copy(A + N_2, A + N, C);
        std::copy(B, B + N_2, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
        std::copy(C, C + N_2, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
08.07.2014, 10:26     Образовать 2 массива из одного #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
24
25
26
27
28
29
30
31
32
33
34
35
#include <time.h>
 
int main()
{
#define SIZE 10
#define HALF_SIZE SIZE/2
 
int i;
 
int *A = (int*) malloc( SIZE      * sizeof(int) );
int *B = (int*) malloc( HALF_SIZE * sizeof(int) );
int *C = (int*) malloc( HALF_SIZE * sizeof(int) );
 
srand( time( NULL ) );
 
for( i=0; i<SIZE; i++ )
  {
  A[i] = rand()%100;
  printf( "% *d ", 4, A[i] );
  }
 
memcpy( B, A, HALF_SIZE * sizeof(int) );
memcpy( C, A+HALF_SIZE, HALF_SIZE * sizeof(int) );
 
printf( "\n" );
for( i=0; i<HALF_SIZE; i++ )
  printf( "% *d ", 4, B[i] );
 
printf( "\n% *c", HALF_SIZE*HALF_SIZE, ' ' ); // Чисто ради хохмы
for( i=0; i<HALF_SIZE; i++ )
  printf( "% *d ", 4, C[i] );
 
getchar();
return 0;
}
Kukurudza
08.07.2014, 10:41
  #7

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Просто так:
Код C
#include <time.h>
int main()
{
#define SIZE 10
#define HALF_SIZE SIZE/2
int i;
int *A = (int*) malloc( SIZE * sizeof(int) );
int *B = (int*) malloc( HALF_SIZE * sizeof(int) );
int *C = (int*) malloc( HALF_SIZE * sizeof(int) );
srand( time( NULL ) );
for( i=0; i<SIZE; i++ )
{
A[i] = rand()%100;
printf( "% *d ", 4, A[i] );
}
memcpy( B, A, HALF_SIZE * sizeof(int) );
memcpy( C, A+HALF_SIZE, HALF_SIZE * sizeof(int) );
printf( "\n" );
for( i=0; i<HALF_SIZE; i++ )
printf( "% *d ", 4, B[i] );
printf( "\n% *c", HALF_SIZE*HALF_SIZE, ' ' ); // Чисто ради хохмы
for( i=0; i<HALF_SIZE; i++ )
printf( "% *d ", 4, C[i] );
getchar();
return 0;
}
ужснах

srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
08.07.2014, 12:56     Образовать 2 массива из одного #8
Kukurudza, я бы послушал, как ТС будет объяснять преподавателю для чего нужны и как работают copy и ostream_iterator в вашем примере. ибо (не в обиду ТС), если он не знает как работать с массивом, вряд ли он знает что это такое, как это работает и для чего это необходимо.

SatanaXIII, это сильно! аплодирую стоя!
Roodey
4 / 4 / 1
Регистрация: 23.05.2013
Сообщений: 36
09.07.2014, 11:30     Образовать 2 массива из одного #9
srin, ну, так как раз, в массиве из, допустим 6 элементов, в первом цикле пройдутся {[0] [1] [2]} и закончатся на [3] не включая его, а второй цикл начнет пробег с [3] элемента и включит в себя {[3] [4] [5]} элементы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2014, 13:15     Образовать 2 массива из одного
Еще ссылки по теме:

копирование с одного массива в другой C++
Из одного массива сформировать другой C++
C++ Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию

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

Или воспользуйтесь поиском по форуму:
srin
25 / 25 / 11
Регистрация: 05.05.2014
Сообщений: 115
09.07.2014, 13:15     Образовать 2 массива из одного #10
Roodey, это я понимаю, но в условии то про это ничего не сказано.
Yandex
Объявления
09.07.2014, 13:15     Образовать 2 массива из одного
Ответ Создать тему
Опции темы

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