0 / 0 / 0
Регистрация: 10.02.2019
Сообщений: 6
1

Осуществить перестановку элементов одномерного массива без использования дополнительного массива

25.02.2019, 21:55. Показов 4730. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написать программу, которая осуществляет перестановку элементов одномерного массива
(заполненный случайными числами в диапазоне от -5 до 5) без использования
дополнительного массива.
Например:
исходный массив 2 4 -2 0 -3 -1 0 1 1 3
измененный массив 3 1 1 0 -1 -3 0 -2 4 2
вот наработки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
int main()
{
    const int max_size = 10;
    int a[10];
    
    for (int i = 1; i < max_size; i++)
    {
        a[i] =rand()% 10-5;
    }
    for (int i = 1; i < max_size; i++)
    {
        cout << a[i] <<" "<<"\n";
    }
    cout << "--\n";
}
у меня программа просто выводит ряд рандомных чисел от -5 до 5,но как поменять их местами-к сожалению не знаю.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2019, 21:55
Ответы с готовыми решениями:

Как найти медиану неотсортированного массива (без использования дополнительного массива)
как найти медиану неотсортированного массива, при этом не используя дополнительных массивов и не...

Переставить элементы заданного массива в обратном порядке без использования дополнительного массива
Напишите программу, которая переставляет элементы массива в обратном порядке без использования...

Работа с матрицами (с использованием/без использования дополнительного массива)
Дан двумерный массив целых чисел. В каждом его столбце найти: а) сумму нечетных элементов; б)...

Переставить элементы в обратном порядке без использования дополнительного массива
Дайте ответ на С++ ,пожалуйста.

4
10 / 7 / 3
Регистрация: 29.11.2018
Сообщений: 14
25.02.2019, 22:21 2
Цитата Сообщение от Stas367 Посмотреть сообщение
измененный массив 3 1 1 0 -1 -3 0 -2 4 2
Расскажите больше об закономерности, а то я не врубаюсь, что делать и как сортировать.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
25.02.2019, 22:28 3
Лучший ответ Сообщение было отмечено Stas367 как решение

Решение

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    const int n=10;
    int a[n];
 
    for (int i = 0; i < n; i++)
      {
      a[i]=rand()%11 - 5;
      cout << a[i] << " ";
      }
    cout << "\n";
    
    for (int i = 0; i < n/2; i++)    
    swap (a[i],a[n-1-i]);
    
    for (int i = 0; i < n; i++)
    cout << a[i] << " ";
    cout << "\n";
    
system("pause");
return 0;
}
1
10 / 7 / 3
Регистрация: 29.11.2018
Сообщений: 14
25.02.2019, 22:31 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
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <ctime>
 
#define SIZE 10
 
int main()
{
    srand((int)time(NULL));
 
    int arr[SIZE];
 
    for (int i = 0; i < SIZE; i++)
    {
        arr[i] = rand() % 11 - 5;
    }
 
    // Алгоритм пузырьковой сортировки
    for (int i = 0; i < SIZE; i++)
    {
        for (int r = 0; r < SIZE; r++)
        {
            if (arr[i] > arr[r])
            {
                int temp = arr[i];
                arr[i] = arr[r];
                arr[r] = temp;
            }
        }
    }
 
    for (int i = 0; i < SIZE; i++)
        std::cout << arr[i] << '\n';
 
    system("pause");
    return 0;
}
Добавлено через 6 секунд
1
610 / 415 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
25.02.2019, 22:39 5
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
#include <algorithm>
#include <iostream>
#include <random>
 
/* заполнение произвольного одномерного контейнера с элементами произвольного типа произвольно распределенными случайными числами */
template <class ForwardIterator, class Distribution>
void random_array_fill(ForwardIterator begin, ForwardIterator end, Distribution&& dist) {
    std::random_device rd;
    std::mt19937 gen(rd());
    for (; begin != end; ++begin) *begin = dist(gen);
}
 
/* вывод содержимого одномерного контейнера в произвольный поток */
template <class Container, class Stream = std::ostream, class char_t = char>
void output_container(const Container & container, Stream & stream, const char_t * delimiter = " ", bool trailing_newline = true) {
    for (auto & item : container) stream << item << delimiter;
    if (trailing_newline) stream << std::endl;
}
 
int main() {
 
    int a[10];
    random_array_fill(std::begin(a), std::end(a), std::uniform_int_distribution<int>(-5, 5));
    std::cout << "Initial array: ";
    output_container(a, std::cout);
    shuffle(std::begin(a), std::end(a), std::random_device());
    std::cout << "Shuffled array: ";
    output_container(a, std::cout);
 
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Stas367 Посмотреть сообщение
но как поменять их местами-к сожалению не знаю.
Алгоритм shuffle поможет... Правда, препод может потребовать всё сделать с нуля
1
25.02.2019, 22:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2019, 22:39
Помогаю со студенческими работами здесь

Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива
3. Дан массив из n элементов. Сожмите массив, выбросив каждый третий его элемент, без использования...

Осуществить циклический сдвиг элементов одномерного массива на k позиций
работает правильно только если k=1 если больше то сдвиг делает правильно, но когда на место их...

С помощью рекурсивной функции осуществить вывод на экран элементов одномерного массива
С помощью рекурсивной функции осуществить вывод на экран элементов одномерного массива

Циклический сдвиг массива без использования вспомогательного массива
Ребят, помогите пожадуйста написать лабу...Времени ктастрофически не хватает, буду очень...


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

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

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