Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 20.11.2016
Сообщений: 31
1

Сформировать новый массив на основе исходного, согласно условию

21.11.2016, 12:29. Показов 1542. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
из заданного одномерного массива A[N] формирует новый массив B из элементов, значение которых не совпадают с первым и
последним элементами заданного массива
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.11.2016, 12:29
Ответы с готовыми решениями:

Сформировать новый массив на основе исходного согласно условию
дан массив А (12)={2,5; 4,3; -0,57; 10,45; 1,5; -7,1; 11,4; 5,12; 4,9; 7,7; -12,3; 0,031}. Создайте...

Заменить заданные элементы исходного массива согласно условию и сформировать новый массив
дан массив a(14). заменить все нечетные элементы с номером индекса и составить массив Б

Сформировать массив на основе исходной матрицы согласно условию
Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если...

Копировать все элементы исходного массива в новый массив, предварительно изменив их согласно условию
Дан массив m. Надо переписать в массив n, где каждый элемент равен m*(сумма квадратов от 1до7). ...

8
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
21.11.2016, 12:33 2
Spoki, массив B такого же размера, как и массив А?
0
1 / 1 / 1
Регистрация: 20.11.2016
Сообщений: 31
21.11.2016, 12:36  [ТС] 3
Да, размерность А и B одинаковы
0
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
21.11.2016, 12:44 4
Spoki, а в первый и последний элементы нового массива чего записать?
0
1 / 1 / 1
Регистрация: 20.11.2016
Сообщений: 31
21.11.2016, 12:45  [ТС] 5
Элементы массива должны задаваться рандомна
0
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
21.11.2016, 12:54 6
Spoki, смотри, вот пример:
массив А:
55, 10, 11, 12, 13, 44

массив А:
??, 10, 11, 12, 13, ??
Вместо вопросиков какие числа должны быть во втором массиве?
0
1 / 1 / 1
Регистрация: 20.11.2016
Сообщений: 31
21.11.2016, 12:57  [ТС] 7
Сместить массив, а в пробелы 0
0
Модератор
Эксперт CЭксперт С++
5286 / 2373 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
21.11.2016, 13:23 8
Цитата Сообщение от Spoki Посмотреть сообщение
в пробелы 0
Давай не ноль, а, скажем, 99:
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <random>
 
int main()
{
    const size_t FROM_NUM = 10;
    const size_t TO_NUM = 20;
    
    std::mt19937 mt( time( nullptr ) );
    std::uniform_int_distribution<size_t> dist( FROM_NUM, TO_NUM );
    
    size_t N = dist( mt );
 
    std::vector<size_t> A(N);
    
    for ( auto & elem : A )
        elem = dist( mt );
 
    for ( const auto & elem : A )
        std::cout << elem << " ";
    std::cout << "\n";
 
    std::vector<size_t> B(N);
 
    std::copy( A.begin(), A.end() , B.begin() );
    std::random_shuffle ( B.begin() + 1, B.end() - 1 );
    
    *B.begin() = 99;
    B.back() =  99;
 
    for ( const auto & elem : B )
        std::cout << elem << " ";
    std::cout << "\n";
 
    return 0;
}
0
Форумчанин
Эксперт CЭксперт С++
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
21.11.2016, 13:37 9
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <algorithm>
#include <iostream>
#include <iterator>
#include <random>
 
int main()
{
    const int N = 15;
    int A[N] = {}, B[N] = {};
    std::mt19937 gen {std::random_device()()};
    std::uniform_int_distribution<> dist(0, 9);
    std::generate(A, A + N, [&dist, &gen] { return dist(gen); });
    const int first = A[0], last = A[N-1];
    std::copy_if(A+1, A + N-1, B, [first, last](const int x) { return x != first && x != last; });
    std::copy(A, A + N, std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::copy(B, B + N, std::ostream_iterator<int>(std::cout, " "));
}
Добавлено через 4 минуты
На array:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <array>
#include <iostream>
#include <iterator>
#include <random>
 
int main()
{
    std::array<int, 15> A, B={};
    std::mt19937 gen {std::random_device()()};
    std::uniform_int_distribution<> dist(0, 9);
    std::generate(A.begin(), A.end(), [&dist, &gen] { return dist(gen); });
    std::copy_if(A.begin()+1, A.end()-1, B.begin(), [&A](const int x) { return x != A.front() && x != A.back(); });
    std::copy(A.begin(), A.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    std::copy(B.begin(), B.end(), std::ostream_iterator<int>(std::cout, " "));
}
1
21.11.2016, 13:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.11.2016, 13:37
Помогаю со студенческими работами здесь

Из заданного массива сформировать новый массив того же размера согласно условию
Помогите решить задачу: Дан массив A размера N. Сформировать новый массив B того же размера по...

Сформировать матрицу из исходного одномерного массива согласно условию
не получается, кто разбирается, помогите с решением

Сформировать массив согласно условию
из элементов массива D сформировать массив А того же размера по правилу:если номер чётный, то...

На основе исходного файла, содержащего целые числа, сформировать новый файл, удалив повторы
Удалить повторения. Дан файл, компоненты которого являются целыми числами. Получить новый файл,...


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

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