Форум программистов, компьютерный форум CyberForum.ru

Поменять местами наибольший и наименьший элементы? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Blackscorpion
 Аватар для Blackscorpion
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 11
21.01.2012, 15:50     Поменять местами наибольший и наименьший элементы? #1
Даны действительные числа а1, а2, ... an
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 15:50     Поменять местами наибольший и наименьший элементы?
Посмотрите здесь:

C++ Массивы: наибольший и наименьший элементы прямоугольной матрицы и поменять их местами
Матрицы: найти наибольший и наименьший элементы и поменять их местами C++
C++ Найти наибольший и наименьший элементы и поменять их местами.
C++ Матрицы. Поменять местами наибольший и наименьший элементы
Поменять местами наибольший и наименьший элементы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
21.01.2012, 15:56     Поменять местами наибольший и наименьший элементы? #2
C++
1
std::iter_swap(std::min_element(v.begin(), v.end()), std::max_element(v.begin(), v.end()));
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 15:58     Поменять местами наибольший и наименьший элементы? #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iterator>
 
int main()
{
    srand(time(NULL));
    std::vector<int> v(10);
    std::generate(v.begin(), v.end(), [] { return rand() % 20; });
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::swap(*std::max_element(v.begin(), v.end()), *std::min_element(v.begin(), v.end()));
    std::cout << std::endl;
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    return 0;
}
http://liveworkspace.org/code/68c2db...ac52889dd663d2
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
21.01.2012, 15:59     Поменять местами наибольший и наименьший элементы? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    int arr[] = { 1, 2, 3, -4, 5, 6, 12, 7, 8 };
    std::vector < int > vec( arr, arr + sizeof( arr ) / sizeof( *arr ) );
    
    std::iter_swap( std::max_element( vec.begin(), vec.end() ),
                    std::min_element( vec.begin(), vec.end() ) );
    
    std::copy( vec.begin(), vec.end(), std::ostream_iterator < int > ( std::cout, " " ) );
    return 0;
}
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
21.01.2012, 16:04     Поменять местами наибольший и наименьший элементы? #5
Цитата Сообщение от Blackscorpion Посмотреть сообщение
Даны действительные числа а1, а2, ... an

если n известно и числа даны в массиве a[n], то:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int min = a[0], max = a[i], maxi=-1, mini=-1;
for (i = 0; i < n; i++) {
  if (a[i] < min) {
    mini = i;
    min = a[i];
  }
  else if (a[i] > max) {
    maxi = i;
    max = a[i];
  }
}
int tmp;
a[mini] = tmp;
a[mini] = a[maxi];
a[maxi] = tmp;
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.01.2012, 16:15     Поменять местами наибольший и наименьший элементы? #6
Цитата Сообщение от megastriker Посмотреть сообщение
max = a[i],
С чего бы это i?
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
21.01.2012, 16:16     Поменять местами наибольший и наименьший элементы? #7
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 <stdio.h>
#include <stdlib.h>
 
int main()
{
    double* a;
    double t;
    int n, i;
    int imin = 0, imax = 0;
 
    printf("n: ");
    scanf("%d", &n);
 
    a = (double*)malloc(n * sizeof(double));
    for(i = 0; i < n; ++i)
    {
        printf("[%d]: ", i + 1);
        scanf("%lf", &a[i]);
    }
 
    for(i = 1; i < n; ++i)
    {
        if(a[i] > a[imax]) imax = i;
        else if(a[i] < a[imin]) imin = i;
    }
 
    t = a[imin];
    a[imin] = a[imax];
    a[imax] = t;
 
    printf("--------------\n");
    for(i = 0; i < n; ++i)
        printf("%f ", a[i]);
    printf("\n");
 
    free(a);
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2012, 16:28     Поменять местами наибольший и наименьший элементы?
Еще ссылки по теме:

C++ Поменять местами наибольший и наименьший элементы
C++ Поменять местами наибольший и наименьший элементы
Поменять местами наибольший и наименьший элементы массива C++

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

Или воспользуйтесь поиском по форуму:
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
21.01.2012, 16:28     Поменять местами наибольший и наименьший элементы? #8
Цитата Сообщение от go Посмотреть сообщение
С чего бы это 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
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    int n, i;
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    int min = a[0], max = a[1], maxi=1, mini=0;
    for (i = 0; i < n; i++) {
        if (a[i] < min) {
            mini = i;
            min = a[i];
        }
        else if (a[i] > max) {
            maxi = i;
            max = a[i];
        }
    }
    int tmp = a[mini];
    a[mini] = a[maxi];
    a[maxi] = tmp;
    return 0;
}
Yandex
Объявления
21.01.2012, 16:28     Поменять местами наибольший и наименьший элементы?
Ответ Создать тему
Опции темы

Текущее время: 16:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru