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

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

Войти
Регистрация
Восстановить пароль
 
 
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
#1

Разложение элементов массива - C++

22.03.2014, 21:59. Просмотров 911. Ответов 36
Метки нет (Все метки)

Суть задания: 1)я должен ввести любых два массива;
2) сравнить елементы двух массивов;(если итый елемент массива больше чем итий элемент второго массива то тогда первый массив больше второго)
3)елементы которые больше я должен разложить;(разложение делать в большем массиве)
ПРИМЕР
дан массив А(11 10 4 5 )и B(7 4 3 1)получается что 11 больше 7.Расскладываем 10.Разложение 11 это 11 10 9 8 7 7. Тоесть 11 расскладывает на меньшие числа до числа с которым было сравнение и еще раз оно приписывается(в данном случае это(... 7 7) И так должно делать со всеми елементами большего массива массива тоесть потом переход на 10. Смотрим если 10 больше 4 то тогда расскладываем и так далее пока не пройдем весь массив если же допустим первый массив больше но в большем массиве какой-то елемент меньше елемента меньшего массива то пропускаем
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 21:59     Разложение элементов массива
Посмотрите здесь:

Задача на разложение массива чисел на положительные - C++
Шеф-повар столовой решила устроить День Уважения к Повару. Для этого она приготовила N необычайно вкусных котлет и втайне постановила, что...

Каждый из элементов x[SUB]i[/SUB] массива X(n) заменить средним значением первых i элементов этого массива - C++
Задание: Каждый из элементов xi массива X(n) заменить средним значением первых i элементов этого массива. Ребят, помогите решить вот...

Каждый из элементов массива заменить средним значением первых элементов этого массива. - C++
текущее сглаживание. Каждый из элементов xi массива X(n) заменить средним значением первых i элементов этого массива.

Найти сумму n первых элементов массива и произвидения m посдедних элементов массива - C++
не могу врубиться как написать эту прогу С клавиатуры вводится массив Т найти сумму n первых элементов массива и произвидения m...

Нахождение суммы всех элементов массива и суммы первых 3-х элементов массива - C++
Нужно создать алгоритм нахождения суммы всех элементов массива А и В ,и сумму первых 3-х элементов массива С. Проблема в том ,что я...

Даны два массива. Сформируйте массив С, состоящий из общих элементов массива А и В - C++
Даны два массива: массив А из n элементов и массив В из m элементов. Сформируйте массив С, состоящий из общих элементов массива А и В. ...

Подсчитать число элементов массива A[n], превосходящих среднее геометрическое этого массива - C++
Подскажите пожалуйста, как подсчитать число элементов массива A, превосходящих среднее геометрическое этого массива.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
IrineK
Заблокирован
23.03.2014, 00:55     Разложение элементов массива #16
А если так:
А (10 11 7)
В (10 11 2 5)

Сравниваем, попутно сокращаем:
А (7)
В (2 5 )

т.е. А больше В.
Раскладываем
А (7 6 5 4 3 2 2)
В (2 5 )

А теперь чего?
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 01:00  [ТС]     Разложение элементов массива #17
2 5 не может быть потому что рл числа идут от меньшего к большему тоесть 5 2.....
потом семь раскладывается на 6 5 5,после чего сокращанение 5-ти и так жесамо с двойкой
IrineK
Заблокирован
23.03.2014, 01:06     Разложение элементов массива #18
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от shukaka Посмотреть сообщение
числа идут от меньшего к большему то есть 5 2
По-вашему 5 меньше 2?

Наверное от большего к меньшему.
Т.е. массивы А и В изначально отсортированы по убыванию?
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 01:12  [ТС]     Разложение элементов массива #19
да да поубыванию....ошибся(
IrineK
Заблокирован
23.03.2014, 01:23     Разложение элементов массива #20
Последний вопрос: как у вас с динамическими массивами?
Без них тут никак.
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 01:25  [ТС]     Разложение элементов массива #21
динамические массивы я понимаю
только вопрос их именно надо будет применить для части где идет разложение?
IrineK
Заблокирован
23.03.2014, 01:33     Разложение элементов массива #22
Цитата Сообщение от shukaka Посмотреть сообщение
динамические массивы я понимаю
Что-то ни одного delete закрывающего new я не заметила.

Цитата Сообщение от shukaka Посмотреть сообщение
применить для части
Весь код надо структурировать. Нужно писать функции для подзадач.

Да, и самый последний вопрос)
Ввод матриц обязательно происходит вручную?
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 01:38  [ТС]     Разложение элементов массива #23
да обязательно вручную
а команду delete я планировал написать в самом конце програмы
IrineK
Заблокирован
23.03.2014, 01:41     Разложение элементов массива #24
ОК. Все ясно.
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 01:42  [ТС]     Разложение элементов массива #25
так вы мне поможите с кодом?)
IrineK
Заблокирован
23.03.2014, 01:46     Разложение элементов массива #26
Да. Но пока -
IrineK
Заблокирован
23.03.2014, 05:41     Разложение элементов массива #27
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот - можно играться.
Если будут вопросы - спрашиваем.
Буду в эфире ближе к вечеру.

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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include <iomanip>
using namespace std;
 
//создаем динамический массив размерностью N, заполняем нулями
int *CreateArray (int N)
{   int *arr = new int [N];
    for (int i = 0; i<N; i++)
        arr[i] = 0;
    return arr;
}
 
//удаляем массив
void DeleteArray (int *arr)
{   delete [] arr;
}
 
//заполняем массив вручную
void FillArray (int *arr, int N)
{   for (int i = 0; i<N; i++)
        cin >> arr[i];
    cin.sync();
}
 
//смотрим на массив
void PrintArray (char name, int *arr, int N)
{   cout << "\nМассив "<< name << "\tРазмерность " << N << '\n';
    for (int i = 0; i<N; i++)
        cout << setw (6) << arr[i];
    cout << '\n';
}
 
//перестановка двух интов
void Swap (int &a, int &b)
{   int temp = a;
    a = b;
    b = temp;
}
 
//сортировка массива по убыванию
void SortArray (int *arr, int N)
{   int i,j;
    for (i = 0; i<N-1; i++)
        for (j = i+1; j<N; j++)
            if (arr[i] < arr[j])
                Swap (arr[i], arr[j]);
}
 
//вставка числа <num> на позицию <pos> в массив <arr> размерностью <N>
//если <pos> равно <N>, работает как Append
void InsertNum (int *&arr, int &N, int num, int pos)
{   if (pos > N)
        return;
    
    int i;
    int *res = CreateArray (N+1);
    for (i = 0; i< pos; i++)
        res[i] = arr[i];
    res[i++] = num;
    for ( ; i<N+1; i++)
        res[i] = arr[i-1];
    N++;
    delete [] arr;
    arr = CreateArray (N);
    for (i = 0; i< N; i++)
        arr[i] = res[i];
    delete [] res;
}
 
//удаляем первый элемент массива
void DeleteFirst (int *&arr, int &N)
{   int i;
    int *res = CreateArray (N-1);
    for (i = 1; i<N; i++)
        res[i-1] = arr[i];
    N--;
    delete [] arr;
    arr = CreateArray (N);
    for (i = 0; i< N; i++)
        arr[i] = res[i];
    delete [] res;
}
 
//ищем минимум двух интов
int Min (int a, int b)
{   return (a<b)? a : b;
}
 
//сравниваем массивы
//0 - если один из массивов (или оба) очистился полностью
//1 - если А больше В
//-1 - если В больше А
int ArrayCmp (int *&A, int &nA, int *&B, int &nB)
{   int n = Min (nA, nB);
    int i = 0;
    while (A[0] == B[0])
    {   DeleteFirst (A, nA);
        DeleteFirst (B, nB);
        --n;
        if (!n)
        return 0;
    }
    
    if (!n)
        return 0;
 
    return (A[i] < B[i])? -1 : 1;
}
 
//преобразуем массивы как указано в техзадании
void RearrangeArrays (int *&Bigger, int &nBigger, int *&Smaller, int &nSmaller)
{   int dif = Bigger[0] - Smaller[0];
    for (int i = 1; i <= dif; i++)
        InsertNum (Bigger, nBigger, Bigger[0] - i, i);
    DeleteFirst (Smaller, nSmaller);
}
 
//------------------------------------------------------------------------------
int main() 
{   setlocale (LC_CTYPE, "Russian");
    
    int *A, *B;
    int nA, nB;
    int check;
 
    cout << "\nМассив А\n";
    cout << "\tРазмерность nA = ";
    cin >> nA;
    A = CreateArray (nA);
    cout << "\tЗначения A[i] (через пробел)\n\t";
    FillArray (A, nA);
    SortArray (A, nA);
 
    cout << "\nМассив B\n";
    cout << "\tРазмерность nB = ";
    cin >> nB;
    B = CreateArray (nB);
    cout << "\tЗначения B[i] (через пробел)\n\t";
    FillArray (B, nB);
    SortArray (B, nB);
    
    printf("\n\nВведены массивы:\n");
    PrintArray ('A', A, nA);
    PrintArray ('B', B, nB);
 
    do
    {   check = ArrayCmp (A, nA, B, nB);
        if (check == 1)
            RearrangeArrays (A, nA, B, nB);
        if (check == -1)
            RearrangeArrays (B, nB, A, nA);
    }   while (check);
    
    SortArray (A, nA);
    SortArray (B, nB);
    printf ("\n\nПосле преобразований:\n");
    PrintArray ('A', A, nA);
    PrintArray ('B', B, nB);
 
    DeleteArray (A);
    DeleteArray (B);
    getchar();
    return 0;
}
Миниатюры
Разложение элементов массива  
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 18:23  [ТС]     Разложение элементов массива #28
тут немнгого перебор с колтчеством елементов....
15 надо было разложить на 14 13 12 11 10 9 8 8....тоесть до елемента массива В с которым идет сравнение и 15 уже не пишется
а 9 разложить до 8 7 6 5 4 4(и 9 уже не пишется) тоесть опять же до елемента с котрым идет сравнение
в итоге в ответе должно было быть 14 13 12 11 10 9 8 8 7 6 5 4 2 2 1 1

Добавлено через 7 часов 11 минут
и можете пояснить на словах алгоритм разложения который вы использывали
IrineK
Заблокирован
23.03.2014, 19:44     Разложение элементов массива #29
Цитата Сообщение от shukaka Посмотреть сообщение
15 уже не пишется
Цитата Сообщение от shukaka Посмотреть сообщение
9 уже не пишется
До этого вы об этом не говорили.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 19:46     Разложение элементов массива
Еще ссылки по теме:

В одномерном массиве, состоящем из n элементов массива, вычислить минимальный элемент массива - C++
помогите

Реализовать функции, позволяющие добавлять/удалять блок элементов в массива/из массива - C++
Уважаемые форумчане, помогите, пожалуйста, с написанием программы. Нужно в динамическом одномерном массиве, размер которого указывает...

Найти сумму отрицательных элементов массива и порядочить элементы массива по возрастанию - C++
Помогите написать программу, работающую с одномерным вещественным массивом. - количество элементов N=20; - тип массива – вещественный. ...

Заменить максимальный элемент массива средним арифметическим положительных элементов массива - C++
Помогите решить задачу,голова уже совсем не варит. Заменить максимальный элемент массива средним арифметическим положительных элементов...

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


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

Или воспользуйтесь поиском по форуму:
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 185
23.03.2014, 19:46  [ТС]     Разложение элементов массива #30
да точно не говорил...думал писал(
Yandex
Объявления
23.03.2014, 19:46     Разложение элементов массива
Ответ Создать тему
Опции темы

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