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

Сформировать новый массив, исключив из заданного массива числа, расположенные между max/min

28.09.2018, 20:39. Показов 2906. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано натуральное число n, целые числа а0, а1, .. an . Сформировать новый массив, исключив из заданного массива числа, расположенные между максимальным и минимальным элементами. Если максимальный и минимальный элементы расположены рядом, то новый массив не создавать, но выдать сообщение об этом.

Нужно помочь с задачкой. Преподаватель дал лабораторные, чтобы закрыть академическую разницу. Не могу понять, как получить новый массив, который не включал бы в себя элементы расположенные между Min и Max. Кому не сложно помогите пожалуйста.

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
#include <bits\stdc++.h>
 
using namespace std;
 
int main() 
{
    int N;   
        
    cout << "kol-vo elementov " <<"\n";
    cout <<"N= ";
    cin >> N;
    int*A= new int [N];
    
    for (int i = 0; i < N; i++) {
        cout << "A[" << i << "] = ";
        cin >> A[i];
    }
    int min = A[0];
    for (int i=0; i<N; i++) 
    {
        if (A[i] < min)
        min = A[i];
    }
    cout << "min= " << min <<"\n";
    
    int max = A[0];
    for (int i=0; i<N; i++) 
    {
        if (A[i] > max)
        max = A[i];
    }
    cout << "max= " << max <<"\n";
    
    int*B= new int [N - (max - min - 1)];
    if ((min) < (max))
    {
        
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2018, 20:39
Ответы с готовыми решениями:

Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами...

Найти max и min, если min левее max, то среднее арифметическое между ними
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() {...

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

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

4
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.09.2018, 22:42 2
Лучший ответ Сообщение было отмечено Ek2403 как решение

Решение

Ek2403, Да... Не все хорошо...Хотя и стараешься...
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 <bits\stdc++.h>
 
using namespace std;
 
int main() 
{
    int N;   
        
    cout << "kol-vo elementov " <<"\n";
    cout <<"N= ";
    cin >> N;
    int*A= new int [N];
    
    for (int i = 0; i < N; i++) {
        cout << "A[" << i << "] = ";
        cin >> A[i];
    }
    int im = 0;
    int ix = 0;
    for (int i=1; i<N; i++) 
    {
        if (A[i] < A[im])
          im = i;
        if (A[i] > A[ix])
          ix = i;
    }
    if (ix < im) { int t=ix; ix=im; im=t; }
    if (ix == im +1; {
      cout << "Рядом";
    }
    else {
      int*B = new int [N - (ix - im - 1)];
      int i = 0;
      for(; i <= im; i++) B[i] = A[i];
      for(int j=ix; j<N; j++) B[i++] = A[j]; 
      // Вывод массива В - сам
    }
    return 0;
}
Если в чем ошибся - не обессудь. Не проверял. Поправь сам. Если идейка понятна, это будет легко.
1
30 / 21 / 8
Регистрация: 23.09.2018
Сообщений: 186
29.09.2018, 02:06 3
Лучший ответ Сообщение было отмечено Ek2403 как решение

Решение

Цитата Сообщение от Ek2403 Посмотреть сообщение
исключив из заданного массива числа, расположенные между максимальным и минимальным элементами.
и что останется в этом массиве? минимумы и максимумы?

Добавлено через 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
#include <vector>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
int main() {
    int N;
        
    cout << "N? ";
    cin >> N;
    std::vector<int> A(N);
    for (int i = 0; i < N; i++) {
        cout << "A[" << i << "]? ";
        cin >> A[i];
    }
    
    auto min_and_max = std::minmax_element(A.begin(), A.end());
    int min = *min_and_max.first;
    cout << "min= " << min << "\n";
    int max = *min_and_max.second;
    cout << "max= " << max <<"\n";
    
    if ((max - min) <= 1) {
        cout << "рядом" << endl;
        return 0;
    }
    
    std::vector<int> B;
    std::copy_if(A.begin(), A.end(), std::back_inserter(B), [&](int v){return (v > min) and (v < max);});
    
    return 0;
}
1
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
29.09.2018, 03:13 4
Лучший ответ Сообщение было отмечено Ek2403 как решение

Решение

Ek2403,
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
#include <iostream>
using namespace std;
 
int main()
{
    int n, min, max, imin=0, imax=0, A, B;
    cout <<"n="; cin >>n;
 
    int*a = new int[n+1];
 
    cout <<"Enter "<<n+1<<" elements:\n";
    for (int i = 0; i < n+1; i++)
    {
      cin >>a[i];
      if (i==0 || a[i]<min) {min=a[i];imin=i;}
      if (i==0 || a[i]>max) {max=a[i];imax=i;}
    }  
    
    if (imin<imax) {A=imin; B=imax;}
    else {A=imax; B=imin;}
    
    if(B-A>=2)
    {    
    int*b = new int[n+A-B+2];
    
    for (int i = 0; i <=A; i++)
    b[i]=a[i];
    
    for (int i = B; i <n+1; i++)
    b[i+A-B+1]=a[i];    
    
    for (int i = 0; i < n+A-B+2; i++)
      cout <<b[i]<<" ";
      cout <<endl;
    delete[]b;
    }
    else cout <<"Elements between MIN and MAX are absent\n";
    
    delete[]a;   
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 15.05.2018
Сообщений: 39
29.09.2018, 07:18  [ТС] 5
Идея понятна, думаю разберусь

Большое спасибо всем за помощь, все получилось
0
29.09.2018, 07:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.09.2018, 07:18
Помогаю со студенческими работами здесь

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

Сформировать одномерный массив из 35 четырехзначных нечетных чисел, найти min/max элементы и их индексы
Не знаю как сделать. Нужно сформировать одномерный массив с 35 четырехзначных нечетных цифр. В...

Сумма элементов между MIN и MAX последовательности без массива
Всем привет! Препод дал задание: Найти в последовательности минимальный и максимальный элементы...

Нужно найти произведение между min и max элементами массива
Нужно найти произведение между min и max... #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include...


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

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

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