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

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

29.09.2017, 22:10. Показов 4331. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан массив. Поменять местами:третий и максимальный элементы. Если элементов с максимальным
значением несколько, то в обмене должен участвовать первый из них;
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
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
void main()
{
    srand(time(NULL));
    const int sz = 15;
    int arr[sz];
    for (int i = 1; i < sz; i++)
    {
        arr[i] = rand() % 20;
        cout << arr[i] << " ";
    }
    cout << endl;
    
    int max = arr[1];
    for (int i = 1; i < sz; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    int tmp = arr[3];
    arr[3] = max;
    max = tmp;
    for (int i = 1; i < sz; i++)
    {
        cout << arr[i] << " ";
    }
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2017, 22:10
Ответы с готовыми решениями:

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

Поменять местами минимальный и максимальный элементы массива
Добрый день! Проблема заключается в следующем: Дан массив a из 10 элементов,нужно найти...

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

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

9
Заклинатель змей
700 / 555 / 219
Регистрация: 30.04.2016
Сообщений: 2,591
29.09.2017, 22:52 2
Alex0905131, во-первых, почему массив индексируется с 1, а не 0?
Во-вторых, arr [3] -- 4ый элемент массива
0
672 / 475 / 215
Регистрация: 06.09.2013
Сообщений: 1,306
30.09.2017, 05:32 3
Alex0905131, да индексация с нуля, во-первых, а во-вторых вы не меняете их местами, нужна сохранять не значение максимального элемента, а либо указатель на него:
C++
1
2
3
4
5
6
7
8
9
    int *p_max = arr;
    for (int i = 1; i < sz; i++) {
        if (arr[i] > *p_max) {
            p_max = arr + i;            
        }
    }
    int tmp = arr[2];
    arr[2] = *p_max;
    *p_max = tmp;
либо индекс:
C++
1
2
3
4
5
6
7
8
9
    int imax = 0;
    for (int i = 1; i < sz; i++) {
        if (arr[i] > arr[imax]) {
            imax = i;
        }
    }
    int tmp = arr[2];
    arr[2] = arr[imax];
    arr[imax] = tmp;
0
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
30.09.2017, 08:59 4
Alex0905131, Вам нужно запомнить индекс в массиве максимального значения, а потом третье значение записывать не в max а в массив
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    int max = arr[1];
    int nMax(0);
    for (int i = 1; i < sz; i++) {
        if (arr[i] > max) {
            max = arr[i];
            nMax = i;
        }
    }
    int tmp = arr[3];
    arr[3] = max;
    arr[nMax] = tmp;
    for (int i = 1; i < sz; i++)
    {
        cout << arr[i] << " ";
    }
    system("pause");
}
Добавлено через 9 минут
DobroAlex, woldemas, А разве имеет значение с которого индексировать массив? Если он хочет с единицы, а не с нуля, то это его дело и тогда третьим элементом у него будет именно arr[3]. Хоть с двадцатого пусть индексирует и с шагом 10 Я не вижу проблем в этом, просто нужно учесть это при объявлении максимального числа элементов массива
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
30.09.2017, 10:31 5
Или
C++
1
#include<algorithm>
И весь код поиска и замены заменить на:
C++
1
std::swap(*std::max_element(arr+1, arr+sz), arr[3]);
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
30.09.2017, 14:56 6
Цитата Сообщение от Даценд Посмотреть сообщение
std::max_element(arr+1, arr+sz)
+1 зачем?
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
30.09.2017, 16:09 7
Новичок,
А у них у всех в коде нумерация элементов с единицы.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
30.09.2017, 16:50 8
Даценд, тогда arr + sz + 1 надо.
0
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
30.09.2017, 17:05 9
Новичок,
Не-а, там 0-й элемент просто в разборках не участвует. Его не видно, но он есть!
А вот arr + sz нету. Последний arr+sz - 1.
Ибо
Цитата Сообщение от Alex0905131 Посмотреть сообщение
C++
1
int arr[sz];
0
Заклинатель змей
700 / 555 / 219
Регистрация: 30.04.2016
Сообщений: 2,591
30.09.2017, 17:47 10
Avaddon74, не C-way
0
30.09.2017, 17:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2017, 17:47
Помогаю со студенческими работами здесь

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

Поменять местами максимальный и последний элементы массива
Как это реализовать? #include &lt;vcl.h&gt; #include &lt;math.h&gt; #include&lt;iostream.h&gt; ...

Поменять местами последний и максимальный элементы массива
Не меняются местами!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Написать программу с использованием хранения...

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


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

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