4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
1

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

22.03.2014, 17:58. Показов 1809. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребят не могу подобрать алгоритм ,такой что когда елемент одного массива больше елемента другого массива,то тот елемент что больше расскладывается на меньшие елементы....
ПРИМЕР
допустим дан первый массив А: 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 еще раз нужно прописать И так со всеми числами массива.Мне нужна помощь в самом написании алгоритма,за ранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2014, 17:58
Ответы с готовыми решениями:

Заданы два массива. Проверить, что максимальный элемент массива A больше максимального элемента массива B
Заданы два массива: A={a1, a2, a3, a4}, B={b1, b2…..b6}. Переменной S присвоить значение –1, если...

Если элемент второго массива больше соответствующего элемента первого массива, то поменять элементы местами
Заданные два числовых массива X(N) и Y(N) преобразуйте их по правилу: для каждой пары большее из...

Если максимальный элемент массива А больше минимального элемента массива В, поменять данные элементы местами
Задача, вроде, не сложная, может есть у кого готовая такая? Мне её на разбор надо.. Помогите,...

Определить, что больше: максимальный элемент массива А[10] или минимальный элемент массива В[7]
Определить, что больше: максимальный элемент массива А или минимальный элемент массива В. Поставить...

11
1 / 1 / 2
Регистрация: 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;
}
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
22.03.2014, 21:02  [ТС] 3
а как сделать чтоб разложение происходило в начальном массиве?,тоесть если массив 12 10 7 то должен выйти массив 11 10 9 9 10 7
0
1 / 1 / 2
Регистрация: 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

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

Добавлено через 13 минут
и те массивы всего лишь пример...дожно работать на любых массивах которые я сам задам
0
1 / 1 / 2
Регистрация: 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;
}
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
23.03.2014, 01:18  [ТС] 7
выдает ошибку vector iterator +ofset out of range
0
1 / 1 / 2
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 01:45 8
какой рядок, какой компилятор?
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
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;
}
до этого все норм ....прогу полностью компилирует,но после того как просил ....выдает ошибку....строчку не показывает,но ошибка где то сдесь
0
1 / 1 / 2
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 02:27 10
Нужно вставить
C++
1
it = a.begin();
после
C++
1
a.erase(it + j, it + j + 1);
0
4 / 4 / 4
Регистрация: 09.03.2014
Сообщений: 187
23.03.2014, 02:41  [ТС] 11
все равно ту же ошибку выдает
0
1 / 1 / 2
Регистрация: 19.03.2014
Сообщений: 10
23.03.2014, 09:39 12
Какой компилятор?
Для каких вводных ругается?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.03.2014, 09:39
Помогаю со студенческими работами здесь

При клике на элемент одного массива изменить элемент другого массива с таким же индексом
Привет друзья. Возник вопрос. Есть такая разметка: &lt;section&gt; &lt;div class=&quot;mass-1&quot;&gt;&lt;/div&gt;...

Если наименьший элемент массива х(27) больше 0.1, то все положительные элементы массива заменить единицей
Если наименьший элемент массива х(27) больше 0.1, то все положительные элементы массива заменить...

Пoследний отрицательный элемент массива, модуль которого больше заданной величины, умножить на первый элемент массива
Задание: Пoследний отрицательный элемент массива,модуль которого больше заданной величины,умножить...

Если четвертый элемент массива больше квадратного 6-го элемента, то каждый четвертый элемент заменить на 0 (Исправить ошибку)
Дан одномерный массив A из N элементов. Если четвертый элемент массива больше квадратного 6-го...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru