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

Разбивка массива по элементам! - C++

Восстановить пароль Регистрация
 
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 20:06     Разбивка массива по элементам! #1
Разбивка массива по элементам!

Здравствуйте!!!

Подскажите, пожалуйста, как решить следующею задачу:
Дан массив вида: 11223344
Разбить исходный массив на массив по два элемента вида:
11
12
22
23
33
34
44

У меня получается только вот так:

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

using namespace std;

const int size=9;

int main ()
{
    setlocale (LC_ALL, "Russian");
    char A [size] ={"11223344"};
    
    cout << "Исходный массив:" << endl;
    
    for (int i=0; i<size; i++) cout << A[i] << " ";
    
    cout << endl << endl;
    char temp1 [4][5] = {{0}}; // тетрады
     
    int temp_i=0;
    int temp_j=0;
 
    for (int i=0; i<size; i++) { // разбивка на тетрады
       if (i%2 ==0  && i!=0)
       {
       temp_i++;
       temp_j=0;
       } 
    temp1[temp_i][temp_j++]=A[i];
        }
    
    for (int i=0; i<4; i++) { // к концу строки добавляем символ окончание строки
        temp1 [i][4] = '\0';
        }
    cout << "Разбивка по 2 элемента:" << endl;
    for (int i=0; i<4; i++) {
                for (int j=0; j<5; j++)
                {
                cout << temp1[i][j] << " ";
                }
                cout << '\n';
                }
                cout << endl << endl;
    
    char temp2 [4][5] = {{0}}; // тетрады
     
    int temp_2_i=0;
    int temp_2_j=0;
 
    for (int i=1; i<size; i++) { // разбивка на тетрады
       if (i%2!=0  && i!=0)
       {
       temp_2_i++;
       temp_2_j=0;
       } 
    temp2[temp_2_i][temp_2_j++]=A[i];
        }
    
    for (int i=0; i<4; i++) { // к концу строки добавляем символ окончание строки
        temp2 [i][4] = '\0';
        }
    cout << "Разбивка по 2 элемента:" << endl;
    for (int i=0; i<4; i++) {
                for (int j=0; j<5; j++)
                {
                cout << temp2[i][j] << " ";
                }
                cout << '\n';
                }
                cout << endl << endl;    
   
    
    getch ();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
11.10.2011, 20:14     Разбивка массива по элементам! #2
Лень смотреть ваш код, вопрос-то в чем?!
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 20:50     Разбивка массива по элементам! #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
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void print_source(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
        printf("%d ", *(arr + i));
    printf("\n");
}
 
void print_maked(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
    {
        if ( !(i % 2) )
            printf("\n");
        printf("%d ", *(arr + i));
    }
    printf("\n");
}
 
void arr_init(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
        *(arr + i) = rand() % size;
}
 
void print_note()
{
    printf("\nyou are mistake in choise mask argument\n");
    exit(1);
}
 
void print(int *arr, const int size, const int mask)
{
    switch(mask)
    {
        case 0:
            print_source(arr, size);
            break;
        case 1:
            print_maked(arr, size);
            break;
        default:
            print_note();
    }
}
 
 
int main ()
{
    const int size = 20;
    int array[size], i = 0;
    srand(time(0));
    arr_init(array, size);
    print(array, size, 0);
    print(array, size, 1);
    return 0;
}
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 21:16  [ТС]     Разбивка массива по элементам! #4
Спасибо Alkagolik !!!

PS:
Вот этот фрагмент кода
Код
for (int i=0; i<size; i++) { 
       if (i%2 ==0  && i!=0)
       {
       temp_i++;
       temp_j=0;
       } 
    temp1[temp_i][temp_j++]=A[i];
        }
у меня разбивает массив
на
11
22
33
44
и записывает результат в массив temp1

А вот этот фрагмент кода
Код
for (int i=1; i<size; i++) { 
       if (i%2!=0  && i!=0)
       {
       temp_2_i++;
       temp_2_j=0;
       } 
    temp2[temp_2_i][temp_2_j++]=A[i];
        }
разбивает массив на
12
23
34
и записывает результат в temp2

А стоит задача, что бы результат записывался в один массив. Хотелось бы эти два фрагмента объединить в один и чтобы сразу запись происходила в один массив.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 21:58     Разбивка массива по элементам! #5
простите, прошляпил вот это
Цитата Сообщение от Corvette Посмотреть сообщение
Разбить исходный массив на массив по два элемента вида:
Добавлено через 19 минут
это только для чисел < 10 сейчас поиграюсь с большими
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void print_source(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
        printf("%d ", *(arr + i));
    printf("\n");
}
 
void arr_init(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
        *(arr + i) = rand() % 10;
}
 
void arr_user_init(int *arr_root, int *arr_user, const int size)
{
    int i = 0, k = -1;
    for (i; i < size; ++i)
    {
        if ( !(i % 2) )
            ++k;
        arr_user[k] = arr_user[k] * 10 + arr_root[i];
    }
}
 
void arr_null(int *arr, const int size)
{
    int i = 0;
    for (i; i < size; ++i)
        arr[i] = 0;
}
 
void print_note()
{
    printf("\nyou are mistake in choise mask argument\n");
    exit(1);
}
 
void print(int *arr, const int size, const int mask)
{
    switch(mask)
    {
        case 0:
            print_source(arr, size);
            break;
        default:
            print_note();
    }
}
 
 
int main ()
{
    const int size = 20;
    int array_root[size], i = 0, array_user[(size / 2)];
    srand(time(0));
 
    arr_null(array_user, (size / 2));
    arr_init(array_root, size);
    print(array_root, size, 0);
    arr_user_init(array_root, array_user, size);
    print(array_user, size / 2, 0);
    return 0;
}
Добавлено через 19 минут
так пройдет?
Код
609 288 545 66 932 27 601 22 771 747 243 828 598 806 795 244 330 71 811 791 
609288 545066 932027 601022 771747 243828 598806 795244 330071 811791
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 22:03  [ТС]     Разбивка массива по элементам! #6
Спасибо за помощь!!!

Но мне надо что бы к примеру из массива типа char вида "10110101" получились следующие строки
10
01
11
10
01
10
01
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 22:12     Разбивка массива по элементам! #7
Цитата Сообщение от Corvette Посмотреть сообщение
Но мне надо что бы к примеру из массива типа char вида "10110101" получились следующие строки
переделайте пост #3 в чар и будет то что вы ищете. для этой задачи второй массив не нужен.
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 22:19  [ТС]     Разбивка массива по элементам! #8
Спасибо, а можно как то обойтись без указателей? Допустим с помощью только циклов?
Я с указателями еще не очень дружу к сожалению. :-)
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 22:23     Разбивка массива по элементам! #9
если вы о строках 9, 20, 29 из поста #3, то да, их можно заменить на arr[i]. А если о том как передать массив в функцию, то нет, иначе нельзя (по крайней мере я не знаю).
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 22:38  [ТС]     Разбивка массива по элементам! #10
А как то объединить два фрагмента моей корявой программы в один?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
11.10.2011, 23:00     Разбивка массива по элементам! #11
Цитата Сообщение от Corvette Посмотреть сообщение
А как то объединить два фрагмента моей корявой программы в один?
а зачем? вы изначально делали второй массив, а по сути он не нужен... следовательно надо переписывать всё. Берите мой код, подробно его разберите, перепишите типы массива в чар и все. Это конечно не самый удачный пример структурного программирования, но все таки что-то. Какая разница С или С++ ? с++ начинается с ООП, это уже да, имеет значение, а в такой структуре программы разницы нет. пишите на Си. когда начнете учить ООП, тогда будете писать на С++. Это мое субъективное мнение, основывающееся на логических заключениях. Я вам его не навязываю.

Добавлено через 15 минут
можно так же все функции, содержащие printf() вынести в отдельный file.c, создать свой file.h, в который включить инклюды, подключить свой file.h в оба file.c и все это дело скомпилировать. зачет обеспечен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2011, 23:11     Разбивка массива по элементам!
Еще ссылки по теме:

Обращение к элементам массива используя указатель C++
Сортирование массива, по элементам C++
C++ Способы обращения к элементам массива

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

Или воспользуйтесь поиском по форуму:
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
11.10.2011, 23:11  [ТС]     Разбивка массива по элементам! #12
Спасибо огромное за помощь!!!!

Буду учиться!!!
Yandex
Объявления
11.10.2011, 23:11     Разбивка массива по элементам!
Ответ Создать тему
Опции темы

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