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

Поменять местами первый минимальный и последний максимальный элементы заданного одномерного массива

17.10.2018, 22:20. Показов 14967. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поменять местами первый минимальный и последний максимальный элементы массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2018, 22:20
Ответы с готовыми решениями:

Поменять местами первый минимальный и последний максимальный элементы массива
"Дан одномерный целочисленный массив из N элементов, заданных случайными числами на промежутке [a;...

Поменять местами первый минимальный и последний максимальный элементы массива
В среде MS Visual C++ разработать программу, которая формирует одномерный целочисленный массив из N...

Найти первый минимальный и последний максимальный элементы массива. Поменять местами столбцы, содержащие эти элементы
Найти первый минимальный и последний максимальный элементы массива. Поменять местами столбцы,...

Поменять в списке местами первый минимальный и последний максимальный элементы
односвязный список stl (c++) На основе данных входного файла создать список. Поменять в списке...

9
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
17.10.2018, 23:06 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
#include <iostream>
 
const int SIZE = 10;
 
int main()
{
    int arr[SIZE] = { 3, 1, 7, 1, 2, 5, 9, 6, 9, 7 };
 
    int max       = arr[0];
    int min       = arr[0];
    int max_index = 0;
    int min_index = 0;
    int i         = 1;
 
    for(; i < SIZE; ++i)
    {
        if(min > arr[i])
        {
            min = arr[i];
            min_index = i;
        }
    }
 
    --i;
 
    for(; i >= 0; --i)
    {
        if(max < arr[i])
        {
            max = arr[i];
            max_index = i;
        }
    }
 
    arr[max_index] = min;
    arr[min_index] = max;
 
    for(i = 0; i < SIZE; ++i)
        std::cout << arr[i] << ' ';
 
    return 0;
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.10.2018, 00:13 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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, imin=0, imax=0;
    cout <<"n="; cin >>n;
 
    double*a = new double[n], min, max;    
    
    cout <<"Matrix a:\n";
    for (int i = 0; i < n; i++)
      {
      a[i]=rand()%9 + 1;
      if (i==0 || a[i]<min) {min=a[i];imin=i;}
      if (i==0 || a[i]>=max) {max=a[i];imax=i;}
      cout <<a[i]<<" ";
      }
      
    swap (a[imin], a[imax]);      
    
    cout <<"\nModified matrix a:\n";
    for (int i = 0; i < n; i++)      
      cout <<a[i]<<" ";
      cout <<endl;    
    
    delete[]a;
system("pause");
return 0;
}
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
18.10.2018, 00:29 4
Цитата Сообщение от n1b1ru Посмотреть сообщение
if(max < arr[i])
C++
1
if(max <= arr[i])
0
sourcerer
18.10.2018, 06:33
  #5
 Комментарий модератора 
kornedar, пожалуйста, прочитайте правила форума.
Особое внимание обратите на пункт 4.3 (порядок именования тем).
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
18.10.2018, 13:52 6
Kuzia domovenok, тогда сохранится первый максимальный
0
4064 / 3318 / 924
Регистрация: 25.03.2012
Сообщений: 12,493
Записей в блоге: 1
18.10.2018, 19:19 7
n1b1ru, наоборот, если в конце массива есть элемент равный max, цикл войдёт в это условие
0
0 / 0 / 0
Регистрация: 13.09.2018
Сообщений: 53
18.10.2018, 22:49  [ТС] 8
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 <iostream> 
using namespace std;
 
int main()
{
    float a[8];
 
 
 
 
        int n; cout << "n="; cin >> n;  //задаём размерность массива
    for (int i = 1; i <= n; i++) { //присваиваем каждому элементу массива свой порядковый номер (для удобства проверки работы алгоритма) 
        cout << "a[" << i << "]="; cin >> a[i];
    }
 
    float min = a[0], max = a[0];
    int nmin = 0, nmax = 0;
    for (int i = 1; i < n; ++i)
    {
        if (a[i] < min) { min = a[i]; nmin = i; } 
        a[nmax] = min;
        
    }
    for (int i = 1; i < n; ++i)
    {
        if (a[i] > max) { max = a[i]; nmax = i; }
        a[nmin] = max;
    }
    for (int i = 1; i < n; ++i)
        cout << a[i] << "\t";
    system("pause");
    return 0;
}
А эта программа почему не работает?

Добавлено через 11 минут
необходимо самостоятельно вводить элементы массива
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
18.10.2018, 23:38 9
Цитата Сообщение от kornedar Посмотреть сообщение
необходимо самостоятельно вводить элементы массива
можно сразу сообщить условие, а не выкладывать построчно ?
Цитата Сообщение от kornedar Посмотреть сообщение
А эта программа почему не работает?
там код и комментарии один другого стоят
Цитата Сообщение от kornedar Посмотреть сообщение
задаём размерность массива
зачем задавать размерность, если строкой выше она задана
Цитата Сообщение от kornedar Посмотреть сообщение
float a[8];
да и по стандарту С++ нельзя вводить размерность статического массива с клавиатуры (это константа)
Цитата Сообщение от kornedar Посмотреть сообщение
присваиваем каждому элементу массива свой порядковый номер
каждый элемент массива и так имеет свой номер
Цитата Сообщение от kornedar Посмотреть сообщение
for (int i = 1; i < n; ++i)
индексация в С++ начинается с нуля
да и дальше хватает ошибок
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
#include <iostream>
using namespace std;
 
int main()
{
    int n, imin=0, imax=0;
    cout <<"n="; cin >>n;
 
    double*a = new double[n], min=0.0, max=0.0;    
    
    cout <<"Enter "<<n<<" elements:\n";
    for (int i = 0; i < n; 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;}      
      }          
      
    swap (a[imin], a[imax]);      
    
    cout <<"Modified matrix a:\n";
    for (int i = 0; i < n; i++)      
      cout <<a[i]<<" ";
      cout <<endl;    
    
    delete[]a;
system("pause");
return 0;
}
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
19.10.2018, 12:07 10
Kuzia domovenok, вы видимо не заметили, второй цикл реверсивный, следовательно первый максимальный будет последним для массива
1
19.10.2018, 12:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2018, 12:07
Помогаю со студенческими работами здесь

Массивы. Поменять местами первый минимальный и последний максимальный элементы
Условие: Дана последовательность из n действительных чисел. Замечание: Решить используя...

Поменять в массиве местами первый максимальный и последний минимальный элементы
помогите пожалуйста

В каждой строке матрицы поменять местами максимальный и первый, минимальный и последний элементы
Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого...

Поменять местами первый и минимальный (последний из минимальных) элементы массива
Дан массив aa из nn целых чисел. Требуется поменять местами первый и минимальный элементы и вывести...


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

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