Сообщение от Loni
из массива А(К), заполненным случайным образом от 0 до 9 переписать эти числа в порядке возрастания в массив В(К).
Loni, здравствуйте! Вот несколько вариантов ответа на первый вопрос:
Вариант 1:
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
| /*
Дата и время написания программы:
20.09.2018
21:48
Условие задачи:
Из массива a(n), заполненного случайным образом от 0 до 9, переписать элементы в порядке возрастания в массив b(n).
Алгоритм:
1. Определяем переменную целого типа для задания размера массивов a и b.
2. Определяем функцию srand(time(NULL)) для генерации случайных чисел из диапазона [0; 9].
3. Задаем начальный размер для двух массивов a и b.
4. Объявляем два одномерных динамических массива заданного размера.
5. Заполняем массив a[n] случайным образом с помощью формулы a + rand % (b - a + 1), где [a; b] - интервал случайного распределения
6. Сортируем массив a[n] методом Пузырька и, на каждом шаге, копируем элементы в массив b[n].
7. Выводим отсортированный масcив b[n].
8. Очищаем память, выделенную под оба массива.
Решение:
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
int n; //Объявляем переменную целого типа (хранит число элементов для обоих массивов)
srand(time(NULL)); //Чтобы при каждом новом запуске программы генерировались новые случайные числа
cout << "Enter an array size:\n";
cout << "n = ";
cin >> n; //Вводим размерность массива
int* a = new int[n]; //Объявляем одномерный динамический массив a размером n
int* b = new int[n]; //Объявляем одномерный динамический массив b размером n
cout << "A random array:\n";
for (int i = 0; i < n; i++) {
a[i] = rand() % 10; //Генерируем случайные числа из диапазона [0; 9] //a + rand % (b - a + 1)
cout << a[i] << " "; //Выводим элементы сгенерированного массива
}
for (int i = 0; i < n; i++) {
for (int j = n - 1; j > i; j--) {
if (a[j] < a[j-1]) {
swap(a[j], a[j-1]); //Упорядочиваем элементы массива a[n] методом Пузырька
}
}
b[i] = a[i]; //Копируем элементы из a[n] в b[n]
}
cout << "\nOutput of the program:\n";
for (int i = 0; i < n; i++) {
cout << b[i] << " "; //Выводим элементы массива b[n], заполненного по возрастанию
}
delete [] a; //Высвобождаем память, выделенную под одномерный динамический массив
delete [] b; //Высвобождаем память, выделенную под одномерный динамический массив
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 2:
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
| /*
Дата и время написания программы:
20.09.2018
22:20
Условие задачи:
Из массива a(n), заполненного случайным образом от 0 до 9, переписать элементы в порядке возрастания в массив b(n).
Алгоритм:
1. Определяем переменную целого типа для задания размера массивов a и b.
2. Определяем функцию srand(time(NULL)) для генерации случайных чисел из диапазона [0; 9].
3. Задаем начальный размер для двух массивов a и b.
4. Объявляем два одномерных динамических массива заданного размера.
5. Заполняем массив a[n] случайным образом с помощью формулы a + rand % (b - a + 1), где [a; b] - интервал случайного распределения.
6. Сортируем массив a[n] c помощью функции sort().
7. Копируем элементы из отсортированного массива a[n] в b[n], используя функцию copy().
8. Выводим отсортированный масcив b[n].
9. Очищаем память, выделенную под оба массива.
Решение:
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main() {
int n; //Объявляем переменную целого типа (хранит число элементов для обоих массивов)
srand(time(NULL)); //Чтобы при каждом новом запуске программы генерировались новые случайные числа
cout << "Enter an array size:\n";
cout << "n = ";
cin >> n; //Вводим размерность массива
int* a = new int[n]; //Объявляем одномерный динамический массив a размером n
int* b = new int[n]; //Объявляем одномерный динамический массив b размером n
cout << "A random array:\n";
for (int i = 0; i < n; i++) {
a[i] = rand() % 10; //Генерируем случайные числа из диапазона [0; 9] //a + rand % (b - a + 1)
cout << a[i] << " "; //Выводим элементы сгенерированного массива
}
sort(a, a + n); //Сортируем массив a[n] по возрастанию используя STL
copy(a, a + n, b); //Копируем элементы из массива a[n] в b[n] используя STL
cout << "\nOutput of the program:\n";
for (int i = 0; i < n; i++) {
cout << b[i] << " "; //Выводим элементы массива b[n], заполненного по возрастанию
}
delete [] a; //Высвобождаем память, выделенную под одномерный динамический массив
delete [] b; //Высвобождаем память, выделенную под одномерный динамический массив
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 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
| /*
Дата и время написания программы:
20.09.2018
22:42
Условие задачи:
Из массива a(n), заполненного случайным образом от 0 до 9, переписать элементы в порядке возрастания в массив b(n).
Алгоритм:
1. Определяем переменную целого типа для задания размера векторов a(n) и b(n).
2. Определяем функцию srand(time(NULL)) для генерации случайных чисел из диапазона [0; 9].
3. Задаем начальный размер для двух векторов a(n) и b(n).
4. Объявляем два вектора типа int заданного размера.
5. Заполняем вектор a(n) случайным образом с помощью функции generate() и лямбда-выражения.
6. Копируем элементы из вектора a(n) в b(n) с помощью функции assign().
7. Сортируем вектор b(n) с помощью функции sort() и лямбда-выражения.
8. Выводим содержимое вектора b(n) с помощью функции copy().
Решение:
*/
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
int n; //Объявляем переменную целого типа (хранит число элементов для обоих массивов)
srand(time(NULL)); //Чтобы при каждом новом запуске программы генерировались новые случайные числа
cout << "Enter an array size:\n";
cout << "n = ";
cin >> n; //Вводим размерность массива
vector<int> a(n);
vector<int> b(n);
generate(a.begin(), a.end(), []() { return rand() % 10; }); //Генерируем случайный вектор a(n)
cout << "A random array:\n";
copy(a.begin(), a.end(), ostream_iterator<int>(cout, " ")); //Выводим содержимое случайно сгенерированного вектора a(n)
b.assign(a.begin(), a.end()); //Копируем элементы из вектора a(n) в b(n)
sort(b.begin(), b.end(), [&](int lhs, int rhs) { return lhs < rhs; }); //Сортируем вектор b(n)
cout << "\nOutput of the program:\n";
copy(b.begin(), b.end(), ostream_iterator<int>(cout, " ")); //Выводим содержимое искомого вектора b(n) через пробел
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
Вариант 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| /*
Дата и время написания программы:
20.09.2018
23:17
Условие задачи:
Из массива a(n), заполненного случайным образом от 0 до 9, переписать элементы в порядке возрастания в массив b(n).
Алгоритм:
1. Определяем переменную целого типа для задания размера массива a(n).
2. Определяем функцию srand(time(NULL)) для генерации случайных чисел из диапазона [0; 9].
3. Задаем начальный размер для массива a(n).
4. Объявляем одномерный динамический массив, а также очередь с приоритетом b.
5. Заполняем массив a[n] случайным образом и одновременно c этим помещаем элементы в очередь с приоритетом b.
6. Выводим содержимое очереди с приоритетом с помощью функций pop(), top(), empty() и цикла while().
7. Очищаем память, выделенную под исходный массив.
Решение:
*/
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <queue>
using namespace std;
int main() {
int n; //Объявляем переменную целого типа (хранит число элементов для обоих массивов)
srand(time(NULL)); //Чтобы при каждом новом запуске программы генерировались новые случайные числа
cout << "Enter an array size:\n";
cout << "n = ";
cin >> n; //Вводим размерность массива
int* a = new int[n]; //Объявляем одномерный динамический массив a размером n
priority_queue<int, vector<int>, greater<int>> b; //Объявляем очередь с приоритетом (куча)
cout << "A random array:\n";
for (int i = 0; i < n; i++) {
a[i] = rand() % 10; //Генерируем случайные числа из диапазона [0; 9] //a + rand % (b - a + 1)
b.push(a[i]); //Добавляем элементы в очередь с приоритетом (сразу по возрастанию)
cout << a[i] << " "; //Выводим элементы сгенерированного массива
}
cout << "\nOutput of the program:\n";
while (!b.empty()) { //Пробегаем циклом по очереди с приоритетом b
cout << b.top() << " "; //Выводим элементы отсортированного массива
b.pop();
}
delete [] a; //Высвобождаем память, выделенную под одномерный динамический массив
system("pause"); //Функция задержки экрана консоли
return 0; //Функция main() возвратила ноль при успешном выполнении программы (то есть, в коде выше ошибок не было)
} |
|
0
|