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

Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы - C++

Восстановить пароль Регистрация
 
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
22.03.2014, 17:58     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #1
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше елемента другого массива,то тот елемент что больше расскладывается на меньшие елементы....
ПРИМЕР
допустим дан первый массив А: 12 10 7 и массив В: 9 6 4. Программа должна показать что 12больше 9 и разложить 12 на 11 10 9 9. Также само 10 больше 6.Программа должна разложить 10 на 9 8 7 6 6. Тоесть программа должна расскладывать большый елемент на меньшие до значение меньшего елемента сравнение и приписываеть еще раз этот елемент(11 10 9 9)как видно 9 еще раз нужно прописать И так со всеми числами массива.Мне нужна помощь в самом написании алгоритма,за ранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 17:58     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
Посмотрите здесь:

C++ Если последний элемент массива положителен, то все элементы массива увеличить на квадрат его максимального элемента
C++ Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7]
C++ Получите новый массив, каждый элемент которого равен удвоенному числу соответствующего элемента исходного массива, если он больше числа A...
Дан одномерный массив вещественных чисел. Написать программу, которая заменяет все элементы массива, меньшие 5, на минимальный элемент массива. Ор C++
Вывести элемент массива, который строго больше минимального C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
22.03.2014, 20:19     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #2
Алгоритм
1. В цикле по элементам массивов берем i-тые элементы двух массивов,
2. Определяем какое из них большее, какое меньшее
3. Если элементы не равны между собой, в цикле от большего до меньшего из них с шагом -1 выводим все значения из этого диапазона
4. Выводим меньшее из них (это для приписывания еще раз меньшего элемента)

Если Вы настроены сами алгоритм программировать, не смотрите под спойлер - там код
Кликните здесь для просмотра всего текста
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
#include <iostream>
using namespace std;
 
int main(int argc, char** argv) {
    int A[] = {12, 10, 7};
    int B[] = { 9, 12, 7};
    int max = 0, min = 0;
 
    for (int i = 0; i < 3; i++) {
 
        max = A[i] > B[i] ? A[i] : B[i] ;
        min = A[i] > B[i] ? B[i] : A[i];
        
        if (max == min) {
            cout << A[i] << " = " << B[i] << endl;
            continue;
        }
        
        cout << max << " > " << min << " : ";
        for (int j = max; j >= min; j--) {
            cout << j << " ";
        }
        cout << min << endl;
    }
    return 0;
}
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
22.03.2014, 21:02  [ТС]     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #3
а как сделать чтоб разложение происходило в начальном массиве?,тоесть если массив 12 10 7 то должен выйти массив 11 10 9 9 10 7
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
22.03.2014, 22:25     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #4
Если исходные массивы должны изменяться, то не очень понятно что с чем сравниваться в итоге будет. Поясните момент, есть два массива:
А 12 10 7
В 9 6 4

Сравниваем два первых элемента и изменяем первый массив
А 11 10 9 9 10 7
В 9 6 4

Что дальше? Что сравниваем?
А 11 10 9 9 10 7
В 9 6 4

А 11 10 9 9 10 7
В 9 6 4

И изменятся могут оба массива, судя по всему?
Опишите задачу подробнее.
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
22.03.2014, 22:50  [ТС]     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #5
ну смотри мы 12 расписали(те числа что получили при росписывнии мы не торгаем) теперь переходим к 10 так как 10 больше 6,потом к 7.7 больше 4 значит расписываем 7 если бы вмнсто 7 было б 3 то ничего б не делали так как 3 меньше четырех

Добавлено через 13 минут
и те массивы всего лишь пример...дожно работать на любых массивах которые я сам задам
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 01:05     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
using namespace std;
 
int main(int argc, char** argv) {
    int n;
    int value;
    vector <int> a;
    vector <int> b;
    
    cout << "Enter the number of elements: ";
    cin >> n;
    cout << "Enter values to first array: " << endl;
    for (int i = 0; i < n; i++) {
        cin >> value;
        a.push_back (value);
    }
    cout << "Enter values to second array: " << endl;
    for (int i = 0; i < n; i++) {
        cin >> value;
        b.push_back (value);
    }
    cout << "First array: ";
    for (int i = 0; i < a.size(); i++) {
        cout << a[i] << " ";
    }
    cout << endl << "Second array: ";
    for (int i = 0; i < b.size(); i++) {
        cout << b[i] << " ";
    }
    vector<int>::iterator it = a.begin();
    int j = 0;
    for (int i = 0; i < b.size(); i++) {
        if ( *(it + j) > b[i]) {
            int size = *(it + j) - b[i];
            vector <int> temp (size);
            for (int t = 0; t < size; t++) {
                temp[t] = *(it + j) - t  - 1;
            }
            temp.push_back (b[i]);
            a.erase (it + j, it + j + 1);
            a.insert (it + j ,temp.begin(), temp.end());
            it = a.begin();
            j += temp.size();
        }
        else {
            it = a.begin();
            j++;
        }
    }
    cout << endl << "Result:" << endl;
    for (int i = 0; i < a.size(); i++) {
        cout << a[i] << " ";
    }
    return 0;
}
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
23.03.2014, 01:18  [ТС]     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #7
выдает ошибку vector iterator +ofset out of range
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 01:45     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #8
какой рядок, какой компилятор?
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
23.03.2014, 01:54  [ТС]     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #9
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
vector<int>::iterator it = a.begin();
    int j = 0;
    for (int i = 0; i < b.size(); i++) {
        if ( *(it + j) > b[i]) {
            int size = *(it + j) - b[i];
            vector <int> temp (size);
            for (int t = 0; t < size; t++) {
                temp[t] = *(it + j) - t  - 1;
            }
            temp.push_back (b[i]);
            a.erase (it + j, it + j + 1);
            a.insert (it + j ,temp.begin(), temp.end());
            it = a.begin();
            j += temp.size();
        }
        else {
            it = a.begin();
            j++;
        }
    }
    cout << endl << "Result:" << endl;
    for (int i = 0; i < a.size(); i++) {
        cout << a[i] << " ";
    }
    return 0;
}
до этого все норм ....прогу полностью компилирует,но после того как просил ....выдает ошибку....строчку не показывает,но ошибка где то сдесь
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 02:27     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #10
Нужно вставить
C++
1
it = a.begin();
после
C++
1
a.erase(it + j, it + j + 1);
shukaka
4 / 4 / 2
Регистрация: 09.03.2014
Сообщений: 184
23.03.2014, 02:41  [ТС]     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #11
все равно ту же ошибку выдает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2014, 09:39     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
mcoffka
 Аватар для mcoffka
1 / 1 / 1
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 09:39     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы #12
Какой компилятор?
Для каких вводных ругается?
Yandex
Объявления
23.03.2014, 09:39     Когда элемент одного массива больше элемента другого массива, то тот элемент что больше расскладывается на меньшие элементы
Ответ Создать тему
Опции темы

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