Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
qwertyyuiop
0 / 0 / 0
Регистрация: 28.06.2017
Сообщений: 1
1

STL: Создать массив длины N. Заполнить массив рандом. Найти все различные числа массива

28.06.2017, 19:51. Просмотров 631. Ответов 3

Создать массив длины N (число N вводится с клавиатуры). Заполнить массив случайными целыми числам. Найти все различные числа массива. Для найденных чисел выполнить следующие операции:
1) определить количество найденных элементов;
2) найти все числа, которые больше А или меньше В (числа А и В вводятся с клавиатуры)
3) найти и удалить число М (число М вводится с клавиатуры);
4) найти число Р (вводится с клавиатуры) и вывести его соседей.
Для выполнения пунктов (1)–(4) воспользоваться стандартными функциями.

Нужно использовать основные функции с vectror, set, map.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2017, 19:51
Ответы с готовыми решениями:

Записать в массив в порядке возрастания все различные числа исходного массива
Дан массив целых чисел X(n) . Сформировать массив Y(m) , поместив в него в...

Дан массив из 10 элементов (заполнить вручную). Найти все четные элементы массива находящиеся на нечетных местах
Дан массив из 10 элементов (заполнить вручную). Найти все четные элементы...

Объединить элементы 2-х массивов в один массив, содержащий все различные числа
Помогите пожалуйста составить программу: Даны 2 последовательности из целых...

Как заполнить массив рандом?
Как заполнить масив рандом в c++ Visual studio 2010 ?

Заполнить массив рандом из 20 чисел, отсортировать по возрастанию и вывести на экран
всем привет.вот пытаюсь заполнить массив рандом из 20 чисел,после мне его нужно...

3
Encephalopathy
69 / 69 / 56
Регистрация: 04.06.2016
Сообщений: 235
Завершенные тесты: 2
28.06.2017, 23:20 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
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
 #include <ctime>
#include <iterator>
using namespace std;
 
int a,b,m,p;
 int f()
{
     return 0+rand()%9;
}
class BetweenAnB
{
    public:
        bool operator()( int x)
        {
 
            return !(x>a || x<b);
        }
};
 
int main()
{
 
setlocale(LC_ALL, "Russian");
srand( time( 0 ) );
           cout << "N=?" << endl;
            int n;
             cin >> n;
          vector<int> v(n);
           generate(v.begin(),v.end(),f);
          copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
          cout << endl;
          sort(v.begin(),v.end());//Нужно для корректной работы unique()
         v.erase( unique(v.begin(),v.end()),v.end());
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
          cout << endl;
          cout << "Кол-во Элементов = "<< v.size() <<endl << "A=?";
          cin >> a;
          cout << "B=?";
          cin >> b;
copy(v.begin(),remove_if(v.begin(),v.end(),BetweenAnB()),ostream_iterator<int>(cout," "));
          cout << endl;
 cout << "M=?";
          cin >> m;
          if(find(v.begin(),v.end(),m)!=v.end())
          {
          v.erase(find(v.begin(),v.end(),m));
       copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
          cout << endl;
          }
          else cout << "Данное число не найдено" << endl;
           cout << "P=?";
          cin >> p;
     vector<int>::iterator it= find(v.begin(),v.end(),p);
if(it!=v.end())
{
    if(it!=v.begin()) cout << *(it-1) << " ";
if(it!=(v.end()-1)) cout << *(it+1);
cout <<endl;
}
else cout << "Данное число не найдено" << endl;
system("pause");
    return 0;
}
0
dawn artist
Заблокирован
28.06.2017, 23:56 3
Encephalopathy, форматирование кода просто 11/10.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8087 / 4940 / 1431
Регистрация: 29.11.2010
Сообщений: 13,398
29.06.2017, 12:03 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <algorithm>
#include <iostream>
#include <iterator>
#include <random>
#include <set>
#include <type_traits>
#include <vector>
 
#define dInput(X) std::cout << #X << " = "; std::cin >> X
 
int main()
{
    auto printWithMsg = [](const char *msg, const auto &cnt)
    {
        std::cout << msg;
        for (const auto &x : cnt)
            std::cout << x << " ";
        std::cout << std::endl;
    };
    // Создать массив длины N (число N вводится с клавиатуры)
    size_t N;
    dInput(N);
    std::vector<int> v(N);
 
    // Заполнить массив случайными целыми числам
    std::default_random_engine gen { std::random_device()() };
    std::uniform_int_distribution<> dist(10, 30);
    std::generate(v.begin(), v.end(), [&dist, &gen] { return dist(gen); });
    printWithMsg("Generated vector:  ", v);
 
    // Найти все различные числа массива
    std::set<int> s(v.cbegin(), v.cend());
    printWithMsg("Different numbers: ", s);
 
    // определить количество найденных элементов
    std::cout << "Number of different numbers is " << s.size() << std::endl;
 
    // найти все числа, которые больше А или меньше В (числа А и В вводятся с клавиатуры)
    int A, B;
    dInput(A);
    dInput(B);
    auto greaterThanABegIt = s.upper_bound(A);
    if (greaterThanABegIt != s.cend())
        ++greaterThanABegIt;
    std::set<int> res(greaterThanABegIt, s.cend());
    res.insert(s.cbegin(), s.lower_bound(B));
    printWithMsg("Greater than A or less than B: ", res);
 
    // найти и удалить число М (число М вводится с клавиатуры)
    int M;
    dInput(M);
    s.erase(M);
    printWithMsg("After delete M: ", s);
 
    // найти число Р (вводится с клавиатуры) и вывести его соседей
    int P;
    dInput(P);
    const auto cit = s.find(P);
    if (cit == s.cend())
        std::cout << "P not found\n";
    else
    {
        if (cit != s.cbegin())
            std::cout << *std::prev(cit) << " ";
        std::cout << *cit << " ";
        if (std::next(cit) != s.cend())
            std::cout << *std::next(cit) << " ";
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2017, 12:03

Используя STL контейнер set заполнить массив
Задание 2. Данную задачу решить не используя метод sort, а используя STL...

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию
создать одномерный массив, заполнить его случайными значениями, отсортировать...

STL Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его по убыванию и вывести
Заполнить массив размером 10 случайными числами от 0 до 10, отсортировать его...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru