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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Corvette
1 / 1 / 0
Регистрация: 09.09.2011
Сообщений: 45
#1

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

11.10.2011, 20:06. Просмотров 684. Ответов 11
Метки нет (Все метки)

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

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

Подскажите, пожалуйста, как решить следующею задачу:
Дан массив вида: 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2011, 20:06     Разбивка массива по элементам!
Посмотрите здесь:

Разбивка строчного массива - C++
Добрый день. Имеется в наличии массив string * arr=new string Внутри него находится следующие символы: 34 61 36 11 17 34 76...

Сортирование массива, по элементам - C++
Нужно изменить массив таким образом чтобы сначала были все элементы равны нулю, а потом остальные. Массив должен быть действительным и...

Обращение к элементам массива в C++ - C++
#include &lt;SFML\Graphics.hpp&gt; const int number_units = 1; Sprite Person; Sprite unitsSprite = { Person }; for (int i = 0; i &lt;...

Обращение к элементам массива структур - C++
Вводим n-ое количество имен и количество оценок каждому из имен.(студент - оценки) #include &lt;iostream&gt; using namespace std; ...

Способы обращения к элементам массива - C++
Насколько мне известно, существуют два способа обращения к элементам массива: 1) С использованием квадратных скобок array 2)При...

Осуществить обращение к элементам массива по указателю - C++
Здравствуйте. Каким образом можно изменить код, чтобы обращение к переменным и элементам массива осуществлялся через указатели (например,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
11.10.2011, 20:14     Разбивка массива по элементам! #2
Лень смотреть ваш код, вопрос-то в чем?!
alkagolik
Заблокирован
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
Заблокирован
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
Заблокирован
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
Заблокирован
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
Заблокирован
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++
Как присвоить значение всем элементам массива наиболее простым способом думал что double massiv={1}; присваивает...

Доступ к элементам массива через указатели - C++
Пишу программу для сортировки массива указателей // сортировка объектов через массив указателей на них #include&lt;iostream&gt; ...

Доступ к элементам динамического массива из структур - C++
Всем доброго времени суток! Проблема вот какая. Есть вот такой вот код. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;string&gt; ...

Сортировка по элементам столбцов двумерного массива - C++
Помогите решить задачу : Даны три матрицы целого типа произвольной размерности (размерность вводится пользователем). Для каждой матрицы...


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

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru