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

Заполнение одного массива элементами другого - C++

Восстановить пароль Регистрация
 
Tortik_Koyot
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 4
07.11.2013, 01:59     Заполнение одного массива элементами другого #1
Доброго времени суток, форумчане.

Я и программирование - токо недавно вместе, месяц, кароч цветочно-конфетный период) - сами знаете, что из этого выплывает...
с++ билдер.
Написал такой вот алгоритм:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <vcl.h>
#pragma hdrstop
#include <stdlib.h>
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
int mas1[2][49]={{0,2,4,6,8,10,12,0,2,4,6,8,10,12,0,2,4,6,8,10,12,0,2,4,6,8,10,12,0,2,4,6,8,10,12,0,2,4,6,8,10,12,0,2,4,6,8,10,12},
{0,0,0,0,0,0,0,2,2,2,2,2,2,2,4,4,4,4,4,4,4,6,6,6,6,6,6,6,8,8,8,8,8,8,8,10,10,10,10,10,10,10,12,12,12,12,12,12,12}};
 
 
int x1,y1,i,x2,y2=0;
int mascentre[2][5];  //массив изначально заполненный вручную
int maspospoint[2][4]; // массив, который заполняется во "внутреннем" цикле while
int masrandpoint[2][25]; // массив, который должен заполниться значениями массива maspospoint при выпронении "внешнего" цикла for
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
     
        mascentre[0][0]=8;
        mascentre[1][0]=8;
        mascentre[0][1]=4;
        mascentre[1][1]=4;
        mascentre[0][2]=6;
        mascentre[1][2]=6;
        mascentre[0][3]=10;
        mascentre[1][3]=10;
        mascentre[0][4]=10;
        mascentre[1][4]=8; // эт все я вручную заполнил, экспериментировал.
 
  
        for(int j=0; j<5;j++) // "внешний"
        {
 
                while(1) // "внутренний"
 
                {
                        x1=mas1[0][i];
                        y1=mas1[1][i];
                        
                        i++;
                        if (x1==12 && y1==12) break;
 
                        if(x1==mascentre[0][j] && y1==mascentre[1][j]-2)
                                {
                                x2=x1;y2=y1;
                                maspospoint[0][0] =  x2;
                                maspospoint[1][0] =  y2;
 
                                x2=0; y2=0;
                                }
                        if((x1==mascentre[0][j]-2) && y1==mascentre[1][j])
                                {
                                x2=x1;y2=y1;
                                maspospoint[0][1] =  x2;
                                maspospoint[1][1] =  y2;
 
                                x2=0; y2=0;
                                }
                        if((x1==mascentre[0][j]+2) && y1==(mascentre[1][j]))
                                {
                                x2=x1;y2=y1;
                                maspospoint[0][2] =  x2;
                                maspospoint[1][2] =  y2;
 
                                x2=0; y2=0;
                                }
                        if((x1==mascentre[0][j]) && y1==(mascentre[1][j]+2))
                                {
                                x2=x1;y2=y1;
                                maspospoint[0][3] =  x2;
                                maspospoint[1][3] =  y2;
 
                                x2=0; y2=0;
                                }
 
                        }
 i=0;
//на этом месте мы имеем полностью заполненный массив maspospoint, далее мы его значения должны поместить в массив masrandpoint. С каждым шагом цикла for значения maspospoint меняются и мы их должны поместить уже дальше в массиве masrandpoint. Я 
                       
                        for(int a=0; a<4; a++)
                        {
                        masrandpoint[0][(j*4)+a]= maspospoint[0][a];
                        masrandpoint[1][(j*4)+a]= maspospoint[1][a];
 
 
                        }
                        j++;
                        }
                        }
Добавлено через 25 минут
Продолжение
Но проблема в том, что masrandpoint заполняется только при j=0,2,4 а при нечетных j=1,3 - не хочет.

Получается такой массив:
C++
1
int masrandpoint[2][25]={{8,6,10,8,0,0,0,0,6,4,8,6,0,0,0,0,10,8,12,10,0,0,0,0},{6,8,8,10,0,0,0,0,4,6,6,8,0,0,0,0,6,8,8,10,0,0,0,0}}
Может ошибка детская)) но все же, что я не учел в последнем цикле?
Нид хелп!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 01:59     Заполнение одного массива элементами другого
Посмотрите здесь:

Заполнение массива вещественными элементами C++
C++ Заполнение множеств элементами массива.
C++ Заполнить массив в структуре элементами другого массива
Как правильно реализовать заполнение двумерного массива элементами C++
Создание одного массива из другого с использованием указателей C++
C++ Создание двумерного массива с элементами из другого
C++ Вывод данных одного массива по элементам другого
C++ Заполнение массива элементами арифметической прогрессии

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,977
07.11.2013, 02:19     Заполнение одного массива элементами другого #2
Цитата Сообщение от Tortik_Koyot Посмотреть сообщение
Написал такой вот алгоритм:
что это? не хочу голову забивать.
Заполнить 1 массив элементами другого массива можно как-бы немного проще
Tortik_Koyot
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 4
07.11.2013, 10:58  [ТС]     Заполнение одного массива элементами другого #3
что это? не хочу голову забивать.
я все ненужное убрал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int maspospoint[2][4];
int masrandpoint[2][25];
 
        maspospoint[0][0]=4;
        maspospoint[1][0]=4;
        maspospoint[0][1]=6;
        maspospoint[1][1]=6;
        maspospoint[0][2]=8;
        maspospoint[1][2]=8;
        maspospoint[0][3]=10;
        maspospoint[1][3]=10;
for(int j=0; j<5;j++)
        {
           for(int a=0; a<4; a++)
                        {
                        masrandpoint[0][(j*4)+a]= maspospoint[0][a];
                        masrandpoint[1][(j*4)+a]= maspospoint[1][a];
 
                        }
                        j++;
                        }
Результат
masrandpoint[2][25]={{4,6,8,10,0,0,0,0,4,6,8,10,0,0,0,0,4,6,8,10,0,0,0,0},{4,6,8,10,0,0,0,0,4,6,8,10,0,0,0,0,4,6,8,10,0,0,0,0}}

то есть пропускает j=1,3. какого?

Добавлено через 1 минуту
тогда так
Yandex
Объявления
07.11.2013, 10:58     Заполнение одного массива элементами другого
Ответ Создать тему
Опции темы

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